これは私のために働いたものです:
ASM ファイル:
; file: blahasm.asm
; assemble with nasm (v 2.10, Mar 12 2012): nasm -f elf32 blahasm.asm -o blahasm.o
bits 32
global _blah
_blah:
mov eax, 42
ret
C ファイル:
// file: blahc.c
// compile with MinGW x86 (gcc v 4.6.2): gcc -Wall -O2 blahc.c blahasm.o -o blah.exe
#include <stdio.h>
extern int blah(void);
int main(void)
{
printf("blah():%d\n", blah());
return 0;
}
出力:
blah():42
elf32
動作する唯一の形式がであり、MinGW である gcc の Windows ポートでサポートされていることに驚いています。
更新:
NASM と MinGW を使用して、アセンブリのみのプログラムを作成しました。
ASM ファイル:
; file: nsm.asm
; assemble with NASM (v 2.10, Mar 12 2012): nasm -f elf32 nsm.asm -o nsm.o
; compile (link) with MinGW x86 (gcc v 4.6.2): gcc -Wall -O2 nsm.o -o nsm.exe
bits 32
extern ___main
extern _printf
global _main
section .rdata
textstr:
db "Hello World!", 10, 0
section .text.startup
_main:
call ___main
push textstr
call _printf
add esp, 4
ret
出力:
Hello World!
"MinGW Shell" (MSYS) から gcc を実行していますが、プログラムを標準ライブラリと正常にリンクさせるために追加のコマンド ライン パラメータを指定する必要はありません。また、MinGW と MSYS のインストールに関して特別なことをする必要はありませんでした。すべてデフォルトのセットアップ パラメータを使用したと思います。