So drucken Sie einen Gleitkomma mit einfacher Genauigkeit mit printf
Ich versuche, eine Gleitkommazahl in einer x86_64-Assembly zu drucken, aber es wird nur der Wert Null ausgegeben.
Dazu gibt es schon ein paar fragen. Man schien gelöst zu sein, indem man dafür sorgte, dassSie legen die Anzahl der verwendeten Vektorregister in% al @ fe. Ein anderer zeigte, dass Sie müssen eine Stapelausrichtung von 16 Bytes haben. Aber ich mache beides und erhalte immer noch keine korrekte Ausgabe.
Das ist mein Programm:
# prints a floating point value
.section .rodata
.fmt: .string "num: %f\n"
.num: .float 123.4
.section .text
.global main
.type main, @function
main:
subq $8, %rsp # 16-byte alignment
# print my number
movss .num, %xmm0 # load float value
movq $.fmt, %rdi # load format string
movb $1, %al # use 1 vector register
call printf
# exit
addq $8, %rsp # undo alignment
movq $0, %rax # return 0
ret