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文件
这样就可以了