vak: (Daemon)
[personal profile] vak
Для знакомства с архитектурой 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!

Date: 2026-04-13 18:46 (UTC)
b0p0h0k: (OSDispak)
From: [personal profile] b0p0h0k
А у ta delayed slot-а нету?

Date: 2026-04-18 07:27 (UTC)
From: [personal profile] litwr
Всё ещё мечтаю добавить результаты по Sparc в свой проект. Жаль, что Sun так и не низошли до масс и не сделали свой ПК. Помню в году примерно 93 зашел в какую-то интернет-компанию, Спарки выглядели очень футуристично, особенно понравились оптические мышки на зеркальных ковриках. Но мне бы что-то 32-битное из 80-х или 90-х. У вас для моего проекта всё слишком круто.

Date: 2026-04-19 06:34 (UTC)
From: [personal profile] litwr
Что ИИ творит! Интересно, что NASM явно использует rel, y FASM это по умолчанию. Вроде есть FASM и для MacOS, FASMG. Но не пробовал, с 2018 с MacOS не встречался.

Date: 2026-04-19 07:03 (UTC)
From: [personal profile] litwr
Круто! Благодарю за внимание к моему проекту. Наверное единственная пока база оптимизированных кодов. ИИ так научится и совсем программерам делать будет нечего. Однако, как круто он пишет документацию! Это тоже Курсор?
Кстати, этот алгоритм из серии "Всё придумал Рабинович". Потому как его впервые описал именно Рабинович в сооавторстве с Вагоном в 1995 - https://en.wikipedia.org/wiki/Spigot_algorithm - там и реализация на паскале с поцифирным выводом, на С заоптимизировали вывод по 4 цифры.
Не стоило наверное упоминать tricky, MMS, Thorham, meynaf и др. - некоторые оказали лишь некоторую психолгическую поддержку, некоторые проявили минимальное скорее бесполезное участие. Реально сильно вложился главный в мире энтузиаст PDP-11 Джонни Биллквист. Он несколько месяцев пытался сделать код быстрее, чем есть в моей базе. Он смог слегка оптимизировать код - ftp://guest:guest@Mim.Update.UU.SE/US:[BQT]PIRSX.MAC - но вне главного цикла, что скорее никак не отразилось на таймингах. И ещё англичан задело, несколько лет таились, а потом выскочили из засады - https://stardot.org.uk/forums/viewtopic.php?t=29301 - и прислали мне сообщение, типа "а у нас круче!" Да, у них круче, но затвор не той системы. :) Сложнее всего оптимизировать код Z80 - очень путанный процессор. Несколько человек косвенно подсказали как с ним справиться. Кто-то ещё помог на пару циклов дожать код для 68000.

Date: 2026-04-19 09:38 (UTC)
From: [personal profile] litwr
Если кого и упоминать, то лучше вот такой список
perestoronin - начал проект, хотя сам никаких кодов не писал, - https://zx-pk.ru/threads/25783-vychislenie-chisla-pi-na-assemblere.html
ivagor - один из главных энтузиастов форума, существенно помог с кодами для 8080 и z80 и немного для других платформ
blackmirror - автор оптимальнейшего алгоритма деления для 8080, z80, pdp-11 noeis, 6809 и возможно некоторых других процессоров
saimo - помог с оптимизацией для 68000
meynaf - помог с оптимизацией умножения на 10000 для 68000 и PDP-11
BigEd - привлек внимание к проекту сообщества пользователей компьютеров Acorn

Date: 2026-04-19 07:09 (UTC)
From: [personal profile] litwr
Впечатляет! Если где удастся найти живого Спарка из 80-х или 90-х придётся этот код брать за основу. А как насчет кода для БЭСМ-6? Хотелось бы в свою базу добавить коды для PDP-10 и PDP-8 доступ к которым есть в сети. Но без ИИ уже наверное не справлюсь и пока занят другими проектами.