我在理解 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 个字节。一个r
或通用寄存器只能有 4 个字节为一组的 32 位整数/定点数。
在二进制中,28 是11100
224 是11100000
。
我怀疑因为它们都有11100
共同点,所以我想当试图将双精度放入R
寄存器时,它需要11100000
并以某种方式将其放入 32 位寄存器中11100
...
真正令人困惑的东西......任何帮助将不胜感激!