gccのオプションを利用すると、アセンブリ言語ソースをアセンブルすることができるようなので、実際にソースを用意して試してみました。
アセンブリ言語のソース
アセンブリ言語のソースファイルは、前回作成したHello Worldを表示するだけのプログラムです。
.file "source.c" .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr" LC0: .ascii "Hello World\0" .text .globl _main .def _main; .scl 2; .type 32; .endef _main: LFB10: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 andl $-16, %esp subl $16, %esp call ___main movl $LC0, (%esp) call _puts movl $0, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc LFE10: .ident "GCC: (GNU) 5.3.0" .def _puts; .scl 2; .type 32; .endef
アセンブル
gccの-cオプションを利用して、アセンブリ言語のソースファイルをアセンブルします。
$ gcc -c source.s
アセンブルされたファイルをメモ帳で開いてみると次のようになりました。
L ィ .text $ 0`.data @ 0タ.bss 0タ.rdata ( @ 0@/4 4 @ 0@/15 8 H ・ @ 0@U牙・・・ ヌ$ ・ ク ノテ瑞食ello World GCC: (GNU) 5.3.0 zR |・ ! A・B ]ナ .file gsource.c _main .text ! .data .bss .rdata $ 8 ___main _puts . .rdata$zzz .eh_frame .rdata$zzz .eh_frame
拡張子を.exeに変更してコマンドプロンプトから実行しましたが、次のようなエラーが表示されて実行できませんでした。
このバージョンの C:\Users\irail\Documents\Program\source.exe は、実行中の Windows のバージョンと互換性がありません。コンピューターのシステム情報を確認してから、ソフトウェアの発行元に問い合わせてください。
次は、リンクを行ってライブラリを結合してみます。
参考文献
この記事を読んだ人はこんな記事も読んでいます。
【C言語】gccでアセンブリ言語のソースファイルをアセンブルする