assembly - 在汇编中打印浮点数
问题描述
我有一个关于打印浮点数以及双字和四字数据之间的差异的问题。这是我的例子
section .data
number dq 2.0
form db '%.2f',0
section .text
extern printf
global main:
push rbp
mov rbp,rsp
push rdi
push rsi
push rbx
movq xmm0,[number]
push qword[number]
mov rdi,form
mov rax,1
call printf
pop rbx
pop rsi
pop rdi
mov rsp,rbp
pop rbp
ret
输出为 :2.0 没问题,但如果数字是双字,则出现问题
section .data
number dd 2.0
form db '%.2f',0
section .text
extern printf
global main:
push rbp
mov rbp,rsp
push rdi
push rsi
push rbx
movd xmm0,[number]
push qword[number]
mov rdi,form
mov rax,1
call printf
pop rbx
pop rsi
pop rdi
mov rsp,rbp
pop rbp
ret
那么输出是 0.00,但是当我检查 xmm0 寄存器时,我注意到在第一种情况下,内容类似于 8_float={0x0,0x2,...},v4_double={0x2,0x0...},而在第二种情况下case 是 8_float={0x2,0x0,..},v4_double={0x0,0x0,..} 所以这意味着 printf 总是检查 v4_double?我尝试用 %lf 打印双精度,但结果相同 0.00,你有什么想法我尝试使用不同的移动,如 movsd、movups、movapd、.. 但这对我没有帮助。你有什么想法吗?
解决方案
推荐阅读
- azure - 无法在 VM 中打开微软浏览器,也无法下载 Web 平台安装程序
- selenium - 如何处理自动生成的网页元素(id)
- python - 在docker容器上运行flask应用程序:错误:python:无法打开文件'//run.py':[Errno 2]没有这样的文件或目录Docker错误
- r - 如何将 Rdata 文件内容加载到 tibble
- android - 任务 ':permission_handler:compileDebugJavaWithJavac' 执行失败
- php - 将我的主题文件更新到最新版本后的 Wordpress 问题
- excel - Excel Cell 值同上,则
- ldap - iTOP LDAP DATA COLLECTOR 限制(解决方案)
- powershell - Powershell:尝试使用正则表达式检查 IP 中的相似性,然后将结果转换为 MD5 哈希
- python - 添加到复杂的嵌套 python 字典