gianthare: (Default)
gianthare ([personal profile] gianthare) wrote2009-08-26 01:25 pm

One instruction set computer

Не помню, чтобы я раньше это видел: Компьютер с одной единственной инструкцией" (теоретическая модель, естественно).
Есть несколько возможных вариантов, один из них "вычесть и прыгнуть, если меньше-равно нуля"
subleq a, b, c   ; Mem[b] = Mem[b] - Mem[a]
                 ; if (Mem[b] ≤ 0) goto c

если адрес для прыжка не указан, то по умолчанию это адрес следующей инструкции, т.е. след. инструкция выполнится независимо от результата

Дальше с ее помощью делается все остальное:
JMP c    == subleq Z, Z, c

ADD a, b == subleq a, Z
            subleq Z, b
            subleq Z, Z

MOV a, b == subleq b, b
            subleq a, Z
            subleq Z, b
            subleq Z, Z

etc.
Восхитительно, по-моему

[identity profile] utnapishti.livejournal.com 2009-08-26 10:34 am (UTC)(link)
"По умольанию" - хорошая опечатка. Типа "надо помолиться, чтобы..."

[identity profile] mopexod.livejournal.com 2009-08-26 11:12 am (UTC)(link)
Занятно, но код - какая-то фигня.
subleq b, b - это, извините, b := 0

[identity profile] gianthare.livejournal.com 2009-08-26 12:10 pm (UTC)(link)
MOV a, b это a -> b
Z это ячейка содержащая 0, так что все путем: b получает a, а Z в конце обнуляют

[identity profile] mopexod.livejournal.com 2009-08-26 12:26 pm (UTC)(link)
Понятно.