簡體   English   中英

具有真實指令助記符的偽指令

[英]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.

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