NASM x86_64 printf浮动打印

时间:2015-10-31 17:41:50

标签: c macos printf nasm x86-64

我尝试在汇编代码中使用printf来打印一些浮点数(准确地说是双精度数),但遗憾的是它不起作用。

代码(英特尔语法)

global start
extern exit
extern printf

section .data

x dq 3.14
format db '%f',0

section .text

start:
    default rel ;64-bit uses realtive addressing

    mov rbp, rsp
    and rsp, 0xFFFFFFFFFFFFFFF0 ;stack alignment

    movsd xmm0, [x]
    lea rdi, [format]
    mov rax, 1
    call printf

    mov qword[rsp], 0
    call exit

构建我使用

nasm seven.asm -fmacho64 --prefix _
ld seven.o -o seven -arch x86_64 -lc -e _start -macosx_version_min 10.6

输出只是0.000000

Macbook Pro 2013 Intel Core i5 处理器, OS X El Capitan

修改

感谢你们,答案是nasm错误,它出现在2.11.06-2.11.08版本的某个地方,导致数据部分中的任何内容被覆盖,除了最后一条指令。并且洗脱液将恢复到2.11.05。

0 个答案:

没有答案