Суммирование с использованием регистров XMM с использованием FASM в ОС Linux - PullRequest
0 голосов
/ 03 ноября 2018

Сумма с использованием регистров xmm с использованием fasm - 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

1 Ответ

0 голосов
/ 03 ноября 2018

Решите это:

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
...