gpt4 book ai didi

ubuntu - 汇编 x86 nasm 输出浮点值

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:44 25 4
gpt4 key购买 nike

我正在做一个项目,我需要使用 C 中的 printf 输出浮点值。

我现在可以打印出这些值,但我不太确定打印是如何进行的。

为了打印 int 值,我只需输入数据类型和位置,它就可以正常打印。

但是对于 float 来说就完全不同了。

这是打印 float 的代码

mov qword rdi, float_format                          
push qword 0
push r14
movsd xmm0, [rsp]
mov qword rax, 1
call printf
pop rax
pop rax

这将有效地打印出从键盘输入的值。但是,当我使用 faddfdiv 等浮点命令操作数字时,为了打印出来,在调用 print float 函数之前,我必须 mov 1 , 拉克斯

想法?为了让它更简单?或者解释我为什么使用 xmm0?

最佳答案

您需要了解正在使用的调用约定。 AMD64 上的 Linux 使用 System V AMD64 ABI .从该文档中我们了解到:

  • 整数参数在 rdi、rsi、rdx、rcx、r8 和 r9 中传递
  • float 在 xmm0 到 xmm7 中传递
  • 对于可变参数函数,使用的 SSE 寄存器的数量放在 rax 中

所以打电话

printf (format, float_value)

您有 rdi=format、xmm0=float_value 和 rax=1。

关于ubuntu - 汇编 x86 nasm 输出浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com