簡體   English   中英

匯編指令如何區分寄存器,存儲器地址,立即數或偏移量參數?

[英]How do assembly instruction differentiate between register, memory address, immediate value or offset parameter?

我一直在想,是否有一些看不見的操作碼或標志或任何告訴匯編指令如何處理其參數的內容? 有點困惑,因為顯然同一條指令可以使用不同類型的操作數進行操作-支持寄存器,內存地址,偏移量和立即數。

匯編程序的“文本表示”中似乎沒有任何額外的細節,但是二進制文件中可能存在差異,例如,切換了一些位,以便CPU知道使用哪種類型的操作數?

指令在硬件中編碼。 如何做到這一點是特定於CPU的。 在x86架構上,您有一些位定義了操作數的尋址模式。 有關更多詳細信息,請參閱《英特爾程序員參考手冊》,其中對此進行了詳細說明。

有時,有些指令具有不同的操作碼和相同的效果,在這種情況下,匯編器可以選擇一個。

http://www.sandpile.org/x86/opc_rm.htm

暫無
暫無

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

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