[英]assembly x86 nasm outputting float values
我正在做一个项目,我需要使用printf
输出浮点值。
我现在可以打印出这些值,但是我不确定如何进行打印。
对于打印int值,我只需按入数据类型和位置,即可正常打印。
但是对于浮动而言,这是一个完全不同的故事。
这是打印浮子的代码
mov qword rdi, float_format
push qword 0
push r14
movsd xmm0, [rsp]
mov qword rax, 1
call printf
pop rax
pop rax
这将有效地打印出从键盘输入的值。 但是,当我使用fadd
或fdiv
类的float命令处理数字时,为了进行打印,在调用print float函数之前,我必须将mov 1, rax
想法? 使它更简单? 或关于我为什么使用xmm0的解释?
您需要知道所使用的调用约定。 AMD64上的Linux使用System V AMD64 ABI 。 从该文档中我们了解到:
所以打电话
printf (format, float_value)
您有rdi = format,xmm0 = float_value和rax = 1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.