这是我要打印的字符串格式:
值:“%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的下半部分都包含我想要打印的所需值。
答案 0 :(得分:1)
void readGyro(float (&fs)[3])
{
fs[0] = gyroPitch;
fs[1] = gyroRoll;
fs[2] = gyroYaw;
}
读取%lx
。整数值存储在整数寄存器中,long int
不是。该值应存储在下一个整数寄存器中(根据Jester的注释,为xmm1
)。