2026-04-13

vak: (Daemon)
Для знакомства с архитектурой SPARC напишем классический пример Hello World на ассемблере. Вот такой файл hello.S:
#include <sys/syscall.h>

        .section .text
        .globl _start
_start:
        mov SYS_write, %g1  // system call to print a string
        mov 1, %o0          // stdout
        set message, %o1    // text to print
        mov 14, %o2         // how many bytes
1:      ta  0               // syscall

        mov SYS_exit, %g1   // system call to finish the program
        mov 0, %o0          // status code
2:      ta  0               // syscall

message:
        .string "Hello, world!\n"
Компилируем в статический бинарник для простоты:
$ cc -E hello.S | as -o hello.o -

$ ld -static -nopie hello.o -o hello

$ size hello
text	data	bss	dec	hex
75	0	0	75	4b
Однако... не работает. Чтобы удовлетворить встроенным в OpenBSD механизмам безопасности, надо добавить ещё пару секций:
        // Mark this binary as being built specifically for OpenBSD.
        .section ".note.openbsd.ident", "a"
        .p2align 2
        .long   8, 4, 1
        .ascii  "OpenBSD\0"
        .long   0

        // List of allowed syscalls.
        .section ".openbsd.syscalls"
        .p2align 2
        .long   1b, SYS_write
        .long   2b, SYS_exit
Вот теперь хорошо:
$ ./hello
Hello, world!
vak: (Daemon)
Sun мне достался в серверной комплектации, то есть без видеоадаптера. А интересно бы глянуть на тогдашнее GUI. На Ebay я нашёл подходящий контроллер: XVR-100.



Имеются порты DVI и VGA. Судя по документации, их можно использовать одновременно, как два разных экрана.



Некоторыми усилиями удалось запустить X11 под OpenBSD. Таки есть вечные ценности! Вспоминается начало 90-х, когда я занимался кириллизацией этого добра. Мало что изменилось за 35 лет. 😀