アセンブラーの小さなコードについては、それらをバッチファイルに入れて直接コンパイルするか、リモートの Windows マシンでコンパイルするのが非常に快適です。
これは、MASM32 で動作するように設計された私の作業用 .bat ファイルです。
;@goto end
.486
.model flat,stdcall
option casemap:none
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
msg db "Hello Word",0
.code
start:
push 0
push offset msg
push offset msg
push 0
call MessageBox
push 0
call ExitProcess
end start
:end
@echo off
set name=%~n0
set cmpname=ml.exe
set linkname=link.exe
for %%X in (%cmpname%) do (set CMPL=%%~$PATH:X)
if defined CMPL (
for %%I in (%linkname%) do (set MLINK=%%~$PATH:I)
if defined MLINK (
%CMPL% /nologo /c /coff /Cp %name%.bat
%MLINK% /SUBSYSTEM:WINDOWS /FIXED:NO %name%.obj
del *.obj
) ELSE (
ECHO Cannot find %linkname% !
)
) ELSE (
ECHO Cannot find %cmpname% !
)
exit /b %ERRORLEVEL%
私の問題:
たとえば、GCCで作業しようとするとき
;@goto end
#include <stdio.h>
int main()
{
return 0;
}
:end
;@echo off
set name=%~n0
set cmpname=gcc.exe
for %%I in (%cmpname%) do (set CMPL=%%~$PATH:I)
if defined CMPL (
%CMPL% -Wall -o %name% %name%.bat
del *.obj
) ELSE (
echo Cannot find %cmpname% !
)
exit /b %ERRORLEVEL%
最初のエラー:
\CodeBlocks\MinGW\bin\gcc.exe は現時点では予期されていませんでした。これ
を検索して見つけた後、次のように変更しました。
for %%I in (%cmpname%) do (set CMPL="%%~$PATH:I")
それを解決しますが、新しいエラーがあります:
testc.bat: ファイルが認識されません: ファイル形式が認識されません collect2.exe: エラー: ld が 1 終了ステータスを返しました
私の質問は
、上記のバッチ ファイルを C/C++ コンパイラで動作させることは可能ですか?