1. 源代碼到可執行 文件之間的轉換用到的 編譯器如gcc、匯編器、連接器等是怎麼集成到IDE環境中的
在VisualC 2005中,如何調用其它編譯器編譯cpp文件呢?換句話說,如何把其它編譯器集成到VC2005的IDE中呢?
象ICC這樣的編譯器安裝之後會自動集成進來,要集成其他編譯器那還得自己動手。下面介紹一種簡單、淺層的「集成」方法。
你也許注意到了,在VC2005的IDE中是不能編譯單個.cpp文件的,除非把它放在工程中。但是,我們可以通過調用外部工具實現編譯單文件。
下面以調用G 為例說明如何編譯單個.cpp文件。如果要編譯單個.c文件,使用GCC即可,方法同理。
也許你現在還不知道G 。G 是GCC中的一員。GCC的含義是GNU編譯器集合(GNUCompilerCollection),包括C、C 、Objective-C、Fortran、Java、Ada連同與這些語言相配的庫等。GCC被譽為「世界上最重要的軟體」。許多免費的編譯器都是GCC的移植版—MinGW(MinimalistGNUforWindows)中攜帶的編譯器就是如此。
以MinGW為例,我們可以下載DevC ,DevC 目前最新版為4.9.9.2。安裝DevC 的同時就安裝了MinGW,其中包含了G 3.4.2.
假設DevC 安裝在D:\Dev-Cpp目錄下。
下面我們在VC2005的菜單點擊「工具(Tools)->外部工具(ExternalTools)->添加(Add)」。
分別填入:
標題(Title):GNUC Compiler
命令(Command):D:\Dev-Cpp\bin\g .exe
參數(Arguments):-Wall-o$(ItemFileName)$(ItemFileName)$(ItemExt)-time
初始目錄(Initialdirectory):$(ItemDir)
再鉤選下面的"使用輸出窗口(UseOutputwindow)".
說明:如果你已經把D:\Dev-Cpp\bin\目錄添加到系統環境變數中,那麼Command指定為g .exe即可。Cygwin同理。
這些參數只是一個參考。你可以查閱VC編譯器的宏設置你需要的參數。
乾脆順帶補充一下DigitalMarsC 編譯器的參考參數設置:
標題(Title):DigitalMars
命令(Command):C:\dm\bin\dmc.exe
參數(Arguments):$(ItemFileName)$(ItemFileName)$(ItemExt)
初始目錄(Initialdirectory):$(ItemDir)
好,下面切換到main函數所在文件,點擊工具(Tools)菜單下的「GNUC Compiler」開始編譯。
注意g 此時編譯的指是純C 程序,對於包含int_tmain(intargc,_TCHAR*argv[])這類VC特有的C 程序自然是無法通過編譯的。
如果編譯沒有出錯,對於早期版本的g 而言,Outputwindow是沒有任何輸出的。
而對於較新版本的g ,將輸出類似以下的信息:
#cc1plus0.670.22
#as0.050.01
#collect20.360.19
這是-time報告的編譯過程中每個子過程所佔用的CPU時間。
當然,你還可以更改編譯參數,使輸出窗口輸出其他編譯信息。
我們還可以通過添加外部工具來實現運行g 生成的程序的功能。步驟如下:
在VC2005的菜單點擊「工具(Tools)->外部工具(ExternalTools)->添加(Add)」。
分別填入:
標題(Title):RunasC Application
命令(Command):%systemroot%\system32\cmd.exe
參數(Arguments):/c$(ItemFileName).exe
初始目錄(Initialdirectory):$(ItemDir)
不要鉤選下面的「使用輸出窗口」和「退出時關閉」。
注意:cpp文件必須放在工程中,g 生成的程序才能被運行!
用MinGW的g 編譯出的程序可以在沒有安裝MinGW的Windows系統上運行!
但是在Cygwin/gcc下編譯出來的程序,在windows執行必須依賴cygwin1.dll。
通過VC2005創建不帶預編譯頭的Win32控制台應用程序空環境,這樣編譯出來的可執行文件也不是放在哪台機子都能跑的。但是常規空環境可以做到。
下面講講如何設置快捷鍵。
點擊菜單中的"工具->自定義",
點擊右下角的"鍵盤",
點擊"按快捷鍵"下面的文本框,
按下Shift Ctrl F7,如果這個快捷鍵已經分配給了其他的命令,更換一個即可。
2. 在開始目錄下如何打開匯編語言編譯器
最好把MASM放在跟目錄下例如D:\MASM
把編輯好的ASM文件(用TXT文檔編寫程序,保存.把後綴名TXT改成ASM)放在MASM文件夾下如(D:\MASM\文件名.ASM)
點擊開始菜單 .運行->CMD->D:回車->CD MASM回車->MASM 文件名3下回車
->LINK 文件名 3下回車->DEBUG 文件名.EXE
現在我們都用 masm集成環境了,建議你用
3. 怎麼編譯連接16位的匯編程序
如果是寫16位匯編,下載masm5.0(微軟的16位宏匯編包),網路一下就有下載!使用masm.exe編譯16位匯編源代碼生成*.obj文件,在用link.exe連接生成16位可執行文件*.exe。在32位機器上是可以寫16位程序的,因為x86的計算機體系就是為了兼容低階程序而存在的,計算機在啟動的時候就是以實模式(可以簡單理解為16位的)啟動的,之後操作系統才使用機器指令轉向32位保護模式(因為這樣從硬體級支持多任務)。編寫16位、32位、以及64位匯編程序只要下載安裝相應的匯編包就可以了。
4. 匯編程序是怎麼編譯的
匯編語言是一種低級語言,匯編語言是匯編指令集、偽指令集和使用它們規則的統稱,使用具有一定含義的符號為助憶符,用指令助憶符、符號地址等組成的符號指令稱為匯編格式指令。
過程:
編輯:用編輯軟體(EDIT.EXE或記事本)形成源程序(.ASM)
匯編:用匯編程序(MASM.EXE)對源程序進行匯編,形成目標文件(.OBJ),格式如下:MASM LX.ASM;
連接:用連接程序(LINK.EXE)對目標程序進行連接,形成可執行文件(.EXE),格式如下:LINK LX.OBJ;
執行:如果結果在屏幕在顯示,則直接執行可執行文件。
調試:用調試程序(LINK.EXE)對可執行文件進行調試,格式如下:DEBUG LX.EXE
匯編語言中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址碼。匯編程序(如MASM)的原理實際上就是把匯編的代碼轉成電腦可以識別的二進制碼
5. 在c語言(C++或G++)中如何嵌入匯編
今天有點時間,重新改下了下,為避免因編譯器和平台實現而出現的問題,我寫了三個版本,分別是windows下vc6.0,windows下mingw和cygwin和linux下的gcc/g++。
vc6.0:
#include <stdio.h>
const char* input = "%d";
const char* output = "%d\n";
int n;
int main()
{
__asm
{
lea eax, n
push eax
push input
loopx:
call scanf
cmp eax, 1
jne end
mov ecx, n
jecxz end
dec ecx
push ecx
push output
call printf
add esp, 8
jmp loopx
end:
add esp, 8
}
return 0;
}
mingw/cygwin:
#include <stdio.h>
const char* input = "%d";
const char* output = "%d\n";
int n;
int main()
{
__asm__
(
"loop: \n"
"pushl $_n \n"
"pushl _input \n"
"call _scanf \n"
"addl $8, %esp \n"
"cmpl $1, %eax \n"
"jne end \n"
"movl _n, %ecx \n"
"jecxz end \n"
"decl %ecx \n"
"pushl %ecx \n"
"pushl _output \n"
"call _printf \n"
"addl $8, %esp \n"
"jmp loop \n"
"end:"
);
return 0;
}
linux gcc/g++:
#include <stdio.h>
const char* input = "%d";
const char* output = "%d\n";
int n;
int main()
{
__asm__
(
"pushl $n \n"
"pushl input \n"
"loop: \n"
"call scanf \n"
"cmp $1, %eax \n"
"jne end \n"
"movl n, %ecx \n"
"jecxz end \n"
"decl %ecx \n"
"pushl %ecx \n"
"pushl output \n"
"call printf \n"
"addl $8, %esp \n"
"jmp loop \n"
"end: \n"
"addl $8, %esp \n");
return 0;
}
6. 全國計算機三級PC匯編語言編譯器是什麼怎麼用進入考試系統後進入到如圖所示,怎麼做了
1.輸入edit 1.asm(源程序文件名)
或者在考試文件夾打開源程序文件,asm格式的,用記事本打開.就能編輯了
我當時考試的時候採取的後者,因為後者能用滑鼠,,哈哈哈哈哈哈,
2.masm 1.asm(源程序文件名) 編譯生成1.obj文件
3.link 1.obj 1.asm(源程序文件名) 將1.obj文件寫入1.exe文件
這樣就可以了