这是 LELAND L beck 的《系统软件》一书中的程序(系统编程简介)
我正在尝试了解 MACROS 的工作原理
这演示了宏的使用
我的疑问是 JEQ *-19 是什么意思以及 JEQ *-3 是什么意思
当我用谷歌搜索时,它说它跳回 19 条指令 那么它会到达哪里 我如何找出 19 条指令并精确定位控制流落地的位置
有什么方法可以让我练习 sic/xe 程序...任何虚拟机或者这样我可以尝试一下..我将非常感谢任何建议...
COPY START 0
RDBUFF MACRO &INDEV,&BUFADR,&RECLTH
CLEAR X
CLEAR A
CLEAR S
+LDT #4096
TD =X'&INDEV'
JEQ *-3
STCH &BUFADR,X
TIXR T
JLT *-19
STX &RECLTH
MEND
WRBUFF MACRO &OUTDEV,&BUFADR,&RECLTH
CLEAR X
LDT &RECLTH
TD =X'&OUTDEV'
JEQ *-3
WD =X'&OUTDEV'
TIXR T
JLT *-14
MEND
...
MAIN PROGRAM
FIRST STL RETADR
CLOOP RDBUFF F1,BUFFER,LENGTH
LDA LENGTH
COMP #0
JEQ ENDFIL
WRBUFF 05,BUFFER,LENGTH
J CLOOP
ENDFIL WRBUFF 05,EOF,THREE
J @RETADR
EOF BYTE C`EOF`
THREE WORD 3
RETADR RESW 1
LENGTH RESW 1
BUFFER RESB 4096
END FIRST
任何帮助将不胜感激。提前致谢和问候
字符
*
计算当前指令的地址,并且 -3
减去三个字节(不是其中的指令)。
TD =X'&INDEV'
JEQ *-3
在这种情况下,
*
将计算为JEQ
地址的值,因此*-3
将计算为TD
的地址(因为TD
指令在内存中占用3个字节)。
类似地,
JLT *-19
将跳转到CLEAR A
(CLEAR
和TIXR
采用格式2,+LDT
采用格式4,其他采用格式3,相加为19)。