0
我在DLX中發生從double到integer的轉換時出現了一些問題。希望大會極客可以幫助我!在DLX處理器中從Double轉換爲Integer
,其具有以下數據:
.data 0
.global a
a: .double 3.14159265358979
.global x
x: .double 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
.double 17,18,19,20,21,22,23,24,25,26,27
.global xtop
xtop: .double 28
組件DLX代碼如下:
ld f2,a
add r1,r0,xtop
; how does r1 get the value of 224 instead of 28???!!!
loop: ld f0,0(r1)
; load stall occurs here
multd f4,f0,f2
; 4 FP stalls
sd 0(r1),f4
sub r1,r1,#8
bnez r1,loop
nop ; branch delay slot
trap #0 ; terminate simulation
我知道double
是64位中的8個字節劃分。 A r
或通用寄存器只能在4個字節的組中具有32位的整數/固定點數。
在二進制中,28是11100
而224是11100000
。
我,因爲他們都懷疑有共同11100
,所以我想嘗試,以適應雙成R
寄存器時,它需要的11100000
,並把它以某種方式在32位寄存器作爲11100
...
真是令人困惑的東西....任何幫助將不勝感激!
謝謝。那麼'xtop'中的值會是什麼呢?我認爲值分配發生在數據文件中,所以我認爲xtop的值爲28. –
最初'xtop'是'28'。代碼將所有數字從「28」向下循環到「1」,並將每個數字乘以「pi」(這是加載到「f2」中的值)。 – Jester