
Сообщение от
electroscat
на сколько я онимаю, это не просто ассемблер, а ассемблер серьезно расширенными возможностями
У DEC два варианта ассемблера - PAL-11 (ОЧЕНЬ старые системы) и MACRO-11. Основное отличие - ассемблер MACRO-11 поддерживает макросы.
А теперь нюанс. По крайне мере в оригинальной документации. Если искать описание именно на MACRO-11, можно налететь с хорошей вероятностью на книжку, где будет описание именно MACRO-11, а не системы команд PDP-11. То есть или вообще не будет описания системы команд или описание базового набора, причём не факт, что с нюансами.
Более того, ВМ2 поддерживает несколько команд, которые специфичны для него - то есть MACRO-11 про них ни сном ни духом. Пусть они и работают в HALT режиме, но тем не менее.
- - - Добавлено - - -
И ещё тонкость. Ассемблер - это программа. Она принимает на вход файл, написанный на ЯЗЫКЕ ассемблера и выдаёт на выходе НЕЧТО. Так вот - ЯЗЫК ассемблера - не эквивалентен системе команд. Даже в PAL-11 есть ДИРЕКТИВЫ компиляции - они тоже входя в ЯЗЫК, но не порождают машинных действия. А уж в MACRO-11 с его макросами - одна ТИПА КОМАНДА языка ассемблера может привести к сколь угодному количеству команды процессора. Или не привести. И вообще, за счёт макросов можно сделать подобие языка высокого уровня, типа:
Код:
;
; Calculate memory size
;
PROCEDURE CMEMSZ
BEGIN
LET PRGSIZ := PRGTOP - PRGBOT
LET @#V.4 := #20$
LET R0 := #-^D<2048>
LET R1 := #0
REPEAT
LET R0 := R0 + #^D<2048>
ADD #0, (R0)
LET R1 := R1 + #1
UNTIL MEM28K EQ R1
LET R0 := R0 + #^D<2048>
10$:
M00612 =: .+2
LET @#V.4 := #V.4+2
GOTO 30$
20$:
LET TOP := #10$
RTI
30$:
IF R1 LO #10 GOTO MEMERR ; Insufficient core
LET PRGBOT := PRGTOP
LET PRGTOP := R0
LET RELCNT := R0 - PRGSIZ
LET R1 := #$LITTB
WHILE #-1 NE (R1) DO
LET (R1)+ := (R1)+ + RELCNT
END
LET R1 := PRGBOT
LET R2 := PRGSIZ
REPEAT
LET -(R0) :B= -(R1)
LET R2 := R2 - #1
UNTIL RESULT IS EQ
RETURN
END CMEMSZ