在汇编期间,Printf调用不在输出期间将IEEE-754浮点值格式化为十六进制

时间:2015-12-01 01:27:30

标签: c assembly printf x86-64

这是我要打印的字符串格式:

值:“%ld项的谐波和为%1.18lf,即0x%016lx”

这是汇编中的代码:

mov qword   rax, 2
mov         rdi, values
mov         rsi, r15
call        printf

基本上它正确输出前两个值,但第三个打印为“0x0000000000000000”,这是不正确的。问题是,如果我将“%016lx”更改为“%a”或%1.18lf之类的其他内容“它似乎正在接收正确的值,那么我不知道为什么转换不适用于”%lx“格式特别。

xmm0和xmm1的下半部分都包含我想要打印的所需值。

1 个答案:

答案 0 :(得分:1)

void readGyro(float (&fs)[3]) { fs[0] = gyroPitch; fs[1] = gyroRoll; fs[2] = gyroYaw; } 读取%lx。整数值存储在整数寄存器中,long int不是。该值应存储在下一个整数寄存器中(根据Jester的注释,为xmm1)。