程序集中的 Printf 调用在输出期间未将 IEEE-754 浮点值格式化为十六进制

Printf call in assembly not formatting IEEE-754 floating point value as hex during output

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

值:"The harmonic sum of %ld terms is %1.18lf, which is 0x%016lx"

这里是汇编代码:

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

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

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

%lx 读取 long int。整数值存储在整数寄存器中,xmm1 不是。该值应存储在下一个整数寄存器中(根据 Jester 的评论为 rdx)。