作者denille (阿丹)
看板ASM
标题[问题] 系统程式里的组语
时间Fri Jan 6 12:46:52 2012
这是系统程式书里,其中一章在介绍组语的,是在介绍多层次的副程式呼叫
顺便附上我的想法...不知道对不对...
程式码:
LD R2, x 将x值载入R2暂存器
PUSH R2 将R2推入堆叠
CALL f1 呼叫副程式f1
ST R1, y 将R1暂存器的内容存到y里(虽然我不知道存了什麽...)
RET
x: WORD 1 x有一个字组的空间
y: RESW 1 y保留了一个字组空间 (x和y差在哪?)
f1:
POP R2 将R2推出来
PUSH LR 将LR推入以返回位址
ST R2, t 将R2暂存器的值存到t里
LD R3, pt 将pt载入R3,因为pt就是t,所以R3的值现在是x?不懂干麻要分pt跟t?
PUSH R3 将R3推入
CALL f2 呼叫f2
ST R1, b 把R1暂存器的值存到b里
ADD R1, R1, R1 把R1的值变成二倍
POP LR 将LR推出
RET
t:RESW 1
b:RESW 1
pt:WORD t
f2:
POP R2 将R2推出,但刚刚在f1不是推出来了?可以再推一次?
LD R3, [R2] 将R2记忆体值里的内容载入到R3,但刚刚R2的值不是存到t里了?
现在R2里还有资料?
LDI R4, 5 将数值5载入R4
ADD R1, R3, R4 R3和R4值相加,载入R1
ST R1, r 将R1的值存入r
RET
r:RESW 1
另外,为什麽要pt: WORD t 再 t: RESW 1呢?
pt: WORD t 代表pt的初始值为t,t也是一个变数,有1个字组的空间?
那为什麽在f1里,ST R2, t 不写成 ST R2, t 呢?
LD R3, pt LD R3, t
好像pt跟t都各是独立的空间?
请大家教教小弟吧!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 27.243.195.157