2016-11-19 63 views
1

我正在創建一些使用Microblaze彙編語言的代碼,我不知道如何加載一個32位數的通用寄存器。我經歷了指令集,但只看到了可以加載的16位立即值。如何加載一個32位值到註冊與microblaze程序集

有人可以提供一個如何做到這一點的例子。

我可以用

shi r8 r0 %0 /* where %0 is to the top 16 bits of a variable */ 
then shift it ? 
and then load r8 bottom bytes? 

我很困惑。任何幫助將我指向正確的方向將是巨大的。

+1

谷歌說, Microblaze是一款32位RISC架構。一個32位常量將佔用一個完整的指令字,不會留下任何操作碼或目標位。所以像所有其他固定指令大小的體系結構一樣,您將需要多個指令。大多數國際檢索單位都有專門針對此的一對說明,這可以使上半部分和下半部分合並起來變得容易。彙編程序通常有一個僞操作,它需要一個32位精靈併發出這兩個指令。但我對Microblaze沒有任何具體的瞭解。 –

回答

1

Microblaze Refference Guide

B型指令具有一個源寄存器和一個16位立即 操作數(其可以通過用IMM指令類型B 指令之前被擴展到32位)。

這意味着,如果你用匯編語言編寫,您可以使用32位立即無後顧之憂:

or r1, r0, 0x12345678 

和彙編程序將其擴展爲:

imm 0x1234 
or r1, r0, 0x5678