![](/img/trans.png)
[英]How Do Assemblers Map x86 Instruction Mnemonics to Binary Machine Instructions?
[英]Pseudoinstructions with real instruction mnemonics
str9
是.data
節中分配的字節的標簽,該字節的地址為0x1001_58e4
。 確定此偽指令的結果將生成的機器代碼 :
lbu $t1, str9
我根本不明白為什么這是一條偽指令,以及為什么不能僅使用給定指令將0x1001_58e4
簡單地加載到$t1
GPR中。 有人可以告訴我為什么在這種情況下不起作用。 匯編程序在處理這種情況時會執行哪些實際指令? 一旦找到真正的指令,我就知道如何將指令轉換為機器代碼,但由於我的教授曾說過需要將其分解為2,所以只是不了解實際指令的必要性。
您是否嘗試過將其變成一條指令? 你成功了嗎? :)
提示:地址本身是一個32位值( 0x1001_58e4
),而mips指令是32位,因此,如果要對其進行編碼,則操作碼和目標寄存器將沒有剩余空間。
因此,您需要按照2條說明進行操作。 首先,您將地址的高16位加載到$t1
,然后使用真實的lbu
給出低16位作為高16位的偏移量:
lui $t1, 0x1001
lbu $t1, 0x58e4($t1)
匯編程序在處理這種情況時會執行哪些實際指令?
您始終可以組裝和拆卸:
Disassembly of section .text:
00000000 <.text>:
0: 3c091001 lui t1,0x1001
4: 912958e4 lbu t1,22756(t1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.