Начитавшись книжки Кнута про архитектуру MMIX, взялся я это дело попрограммировать. Перефразируя Чичикова, давненько не брал я в руки шашек ассемблера. Но вместо кнутовского mmixal задействуем GNU assembler. Он максимально повторяет стандартный синтаксис для MMIX, но в несколько более современном стиле. Где скачать или как собрать GCC тулчейн для MMIX я уже как-то рассказывал.
Адаптируем для GNU ассемблера стандартный пример hello.mms. Получается такой файл hi.S:
Справочник по системе команд MMIX, для интересующихся: mmix.cs.hm.edu/doc/instructions-en.html
Адаптируем для GNU ассемблера стандартный пример hello.mms. Получается такой файл hi.S:
Компилируем:#define Halt 0
#define Fputs 7
#define StdOut 1
.text
.global _init
_init LDA $255, text // Put address of text message into register $255
TRAP 0, Fputs, StdOut // System call Fputs()
SET $255, 0 // Exit code
TRAP 0, Halt, 0 // System call Halt()
.section .rodata
text .asciz "Hi, GNU assembler!\n"
Запускаем с трассировкой:$ mmix-gcc -nostdlib hi.S -o hi
В следующий раз надо будет что-нибудь более сложное сварганить.$ mmix -t2 hi
1. 0000000000000100: 23fffe00 (ADDUI) $255=g[255] = 272 = #110
Hi, GNU assembler!
1. 0000000000000104: 00000701 (TRAP) $255 = Fputs(StdOut,#110) = 19
1. 0000000000000108: e3ff0000 (SETL) $255=g[255] = #0
1. 000000000000010c: 00000000 (TRAP) Halt(0)
4 instructions, 0 mems, 12 oops; 0 good guesses, 0 bad
(halted at location #000000000000010c)
Справочник по системе команд MMIX, для интересующихся: mmix.cs.hm.edu/doc/instructions-en.html

no subject
Date: 2023-09-10 08:59 (UTC)no subject
Date: 2023-09-10 19:50 (UTC)no subject
Date: 2023-09-10 13:28 (UTC)Аплодисменты!
Что-то захотелось тоже на миксе попрограммировать, давненько не брал в руки шашки.
no subject
Date: 2023-09-10 19:51 (UTC)no subject
Date: 2023-09-10 19:54 (UTC)Я как-то наоптимизировал расчет даты пасхи, послал Кнуту; тот мне ответил, что меня уже обогнали, но получил он мое письмо как раз в пасху, так что ХВ.
no subject
Date: 2023-09-10 22:25 (UTC)"...Еhe value of a processor is the amount of computation for the given resources and an the MMIX ISA includes a lot of complexity that doesn't contribute significantly to the performance of average programs."
https://github.com/tommythorn/fpgammix