私は./main
に渡されたパラメータの数を出力する次のコードを持っています。 rodata
セクションのfmt
に注目してください。私はちょうどCのように、代わりに新しい行を印刷する、新しい行\n
を含めました、それは印刷します。パラメータのアセンブリ:printf新しい行を印刷しません
数:1 \ nは
私のコードは次のとおりです。
;main.asm
GLOBAL main
EXTERN printf
section .rodata:
fmt db "Number of parameters: %d \n", 0
section .text:
main:
push ebp
mov ebp, esp ;stackframe
push dword[ebp+8] ;prepara los parametros para printf
push fmt
call printf
add esp, 2*4
mov eax, 0 ;return value
leave ;desarmado del stack frame
ret
は、私は、以下を含む10 fmt
で「...ナンバー」0の前後には、それを印刷することを知っているが、私はprintf
がそれをやりたいです。 NASMでコードを組み立て、GCCでリンクして、実行可能ファイルを作成します。
あなたはそのようなアセンブラコードを "コンパイル"せず、_assembler_を使用します。そして、結果のオブジェクトファイルを "コンパイル"せず、_link_します。とにかく、これはgccに関連せず、C言語ではありません。無関係のタグを追加しないでください。 – Olaf