能力值:
( LV9,RANK:310 )
|
-
-
2 楼
查汇编手册
_asm fld x1
指令格式 指令含义 执行的操作
FLD src 装入实数到st(0) st(0) <- src (mem32/mem64/mem80)
mem8,mem16,mem32,mem64,mem80等表示是内存操作数,后面的数值表示该操作数的内存位数(8位为一字节)
|
能力值:
( LV9,RANK:140 )
|
-
-
3 楼
我知道使用fld指令.
第一个问题我已经解决了.
目前第二个问题还是不明白.为什么双击st(0),下面的hex数据和内存中的数据不一样?
|
能力值:
( LV9,RANK:310 )
|
-
-
4 楼
也许st(0)本来就是80位的寄存器,就像eax是个32位寄存器一样,试过float x1,结果st0还是10个字节的
看上面指令的解释st(0) <- src (mem32/mem64/mem80),就是操作数最大也只能是80位的,用fld 指令时会将原数据自动转换成80位的实数,所以HEX数据不同
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
学习学习
|
能力值:
( LV9,RANK:310 )
|
-
-
6 楼
刚才查了下资料如下
FPU: 8个80位浮点寄存器(数据),16位状态寄存器,16位控制寄存器,16为标识寄存器。
使用FPU指令对这些寄存器进行操作,这些寄存器构成一个循环栈,st7栈底,st0栈顶,
当一个值被压入时,被存入st0,原来st0中的值被存入st1
刚才测试了下,每执行一次fld指令,会依次将数据由st0向st7传递,如上面将x1,x2,x3,x4分别放进st0,st1,st2,st3可写为
_asm {
fld x4
fld x3
fld x2
fld x1
}
haha,又学了一点
|
|
|