linux - 在 Linux OS 下使用 FASM 使用 XMM 寄存器求和
问题描述
使用 fasm 使用 xmm 寄存器求和 - linux:
$./fasm file.asm
$ gcc -s file.o -o file -lm
结果应该是 14,但我得到了7.000000000000000000000000000000
。
这是源代码:
format elf64
extrn printf
section '.data' writeable align 16
rad dq 7.0
fmt db "%.30lf",0ah,0
section '.text' executable align 16
public main
main:
push rbp
mov rbp,rsp
pxor xmm0,xmm0
movsd xmm0,[rad]
pxor xmm2,xmm2
movsd xmm2,[rad]
addsd xmm2,xmm0
mov rax,1
mov rdi,fmt
call printf
mov rsp,rbp
pop rbp
ret
解决方案
解决这个问题 :
format elf64
extrn printf
section '.data' writeable align 16
rad dq 7.0
fmt db "%.30lf",0ah,0
section '.text' executable align 16
public main
main:
push rbp
mov rbp,rsp
pxor xmm0,xmm0
movsd xmm0,[rad]
movsd xmm2,[rad]
addsd xmm0,xmm2
mov rax,1
mov rdi,fmt
call printf
mov rsp,rbp
pop rbp
ret
推荐阅读
- powerbi - 使用日期切片器在报告中添加 Life to date 度量
- android - 在应用程序内打开分支链接时无法检索链接参数
- c++ - shared_ptr 如何检测是否必须调用 delete[] 或 delete
- python-3.x - Python 3 中的骰子模拟器项目
- python - 为什么在 python 中提取了错误的位?
- javascript - 错误:尚未为上下文加载模块名称“@google-cloud/vision”:_。使用要求([])
- c++ - 为什么 std::vector 比数组慢?
- java - 使用 Netbeans 和 Pi4J 库的 Raspberry Pi 简单 Java 应用程序 (LED) 在构建后无法唤醒
- python - 逐行读取图像像素
- spring-boot - @StreamListener 入站消息列表