[問題] 系統程式裡的組語
這是系統程式書裡,其中一章在介紹組語的,是在介紹多層次的副程式呼叫
順便附上我的想法...不知道對不對...
程式碼:
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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章