これが私の短いアセンブリプログラムです:
; This code has been generated by the 7Basic
; compiler <http://launchpad.net/7basic>
extern printf
; Initialized data
SECTION .data
f_0 dd 5.5
printf_f: db "%f",10,0
SECTION .text
; Code
global main
main:
push ebp
mov ebp,esp
push dword [f_0]
push printf_f
call printf
add esp,8
mov esp,ebp
pop ebp
mov eax,0
ret
プログラムが実行することになっているのは5.5を出力することですが、次のように出力します。
-4101885043414705786563701568963176764603483495211119243453355953219830430011006780068899468997203661787555969981250050126586203424320244681571103387315766489883301796219461838644670607029711305942610787622864198879363376953745160639821663444829839767678538571371627347101810056161000273217639447052410683392.000000
一体何が間違っているのですか?コードは2つの引数をにプッシュしてprintf()
から呼び出しています。複雑なことは何もありません。
更新:私はこれを修正したと考えるのに少し時期尚早でした。コードを更新しました。