簡體   English   中英

使用PC的ARM Assembly循環?

[英]ARM Assembly loop using PC?

我目前正在學習手臂裝配,並且有一些問題。 在閱讀文檔時,我發現寄存器n°15是存儲下一條指令地址的程序計數器,當一條指令完成后,它會遞增4(字節,在拇指模式下為2)。

所以,我的問題是,如果我運行一條指令,將PC自身更改為少於4個字節,它會返回到之前的指令,不是嗎? 然后來回一遍又一遍,這將是一個無限循環嗎?

謝謝,如果這是一個明顯的問題,對不起。 問候,佩德羅。

您必須逐條查看指令,因為某些PC的修改是不可預測的,但是對於那些合法修改程序計數器的程序,實質上會導致跳轉到您保存在程序計數器中的地址。 您不必擔心前面的兩個指令(它是8和4個字節,而不是前面的2和2個指令)。

是的-跳轉/分支指令正是您要描述的內容-這是修改PC的指令。 如果您安排跳轉的結果以將程序計數器放回原處,是的,您將當場循環。

請注意,這實際上不是下一條指令的地址,而是當前指令的地址+4(在Thumb模式下)或+8(在ARM模式下)。 因此在ARM中這是2條指令,但在Thumb中可能不是(因為指令可以是16位或32位)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM