编译器编译,如何使用编译器编译汇编语言源程序

1 , 如何使用编译器编译汇编语言源程序1、对支持内嵌汇编的 , 高级语言的编译器能直接编译!2、对不支持内嵌汇编的情况:自然是用汇编编译程序先将汇编源代码编译为obj文件 , 再由链接程序link和其他obj文件装配形成exe 。c编译器也有很多很多种,不同的编译器使用方法都不一样 , 建议你去安装个vc6
2,什么是编译器 编译器是什么意思1、编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序 。一个现代编译器的主要工作流程:源代码→ 预处理器 → 编译器→ 目标代码→ 链接器→ 可执行程序 。2、编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码 , 这种编译器又叫做“本地”编译器 。
3 , 编译器是怎么被编译出来的我们要在Y系统上做一个C语言的编译器,假定:X与Y是不同的两种计算机,其指令系统不兼容 。考虑以下几种情况:Case 1: Y上没有C语言编译器,但X系统上有 。那么我们可以先在X系统上开发一个针对Y系统的C语言交叉编译器 。然后用这个交叉编译器重新编译已有的这个C编译器的源代码,就可以得到能在Y系统上运行的C语言编译器了 。(交叉编译器:在X系统上运行的编译器 , 但编译出来的目标代码在Y系统上运行 。嵌入式平台上的程序基本都是交叉编译得到的,因为嵌入式平台上很少会有自己的编译器)Case 2: X,Y上都没有C语言编译器,但有另一种语言的编译器 。a.我们可以先划出C语言的一个子集,这个子集必须满足两个条件:首先,必须足够简单 , 简单到可以用另一种语言来编写接受这个子集的编译器;其次,必须足够强大,强大到用这个语言子集就可以编写出接受C语言的编译器 。(你一定奇怪为什么一个语言的子集就能写出接收整个语言的编译器,呵呵 。我猜是因为一个语言的很多复杂特性都是由简单特性构成的 , 就像一个struct结构完全可以用几个定义在一起的简单变量代替实现;而且,编译器的实现往往不会用到这个语言的高级特性,需要用的都加到那个子集里就行 。)b.再用另一种语言编写一个能接受这个C语言子集的编译器,只要保证可以在Y系统上正确运行就行,并不对其效率作要求 , 因为基本上它只被用一次 。c.然后,用C语言的子集编写一个在Y系统上的C语言编译器,用上一步得到的编译器编译得到可用的Y系统上的C编译器 。最初的语言 就是01代码也就是机器语言是不需要编译的第一个编译器 就是这样一点点写出来的,是汇编到二进制的编译器所以 第一个编译器本身不需要编译 , 直接运行即可 。【编译器编译,如何使用编译器编译汇编语言源程序】
4,32位编译器上编译是什么意思32位编译器上编译是在32位编译器上编辑/strong>“简单讲 , 编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序 。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)高级计算机语言便于人编写,阅读交流,维护 。5 , 请问如何用VC的编译器编译C的程序在DOS窗里直接打命令:CLprogc.cCLprog.cpp-- progc.cC 程序名, 编译得 progc.exe-- prog.cpp C++ 程序名,编译得 prog.exe命令选项 用CL /?查看.是一条语句一条语句的翻译一个编译器包括词法分析、语法分析、语义分析、中间代码的生成、目标代码的生成、代码优化等其中词法分析的功能是将一个*.c文件读到内存中,然后根据这一大串字符串判断并分割出关键字、字母、标识符等等;语法分析的功能是根据标准c语言的语法判断这个*.c文件是否存在语法错误;语义分析的功能是根据标准c语言的语法确定程序的含义;中间代码的生成是根据源程序生成相应的过度程序;目标代码的生成是根据中间代码生成相应目标代码(如汇编,vc最终生成的是可执行文件:*.exe);代码优化是根据生成的目标代码进行优化,比如减少循环次数等等你所提出的问题,其关键步骤就是语义分析 , 一般用递归的方法一个语句一个语句的编译个人意见 , 仅供参考打开一个C语言源文件然后用VC++编译工程可能是要建立一个大程序文件可能是指建立一个文件,一个文件的程序,就是绿色软件吧我没学过C++也没用过VC++所以此答案没有权威!一般新建一个文件就好了注意文件名要手工加上.c后缀,不然默认是.cppVC对于.c文件会用C的语法标准来编译,而.cpp则用C++的语法标准启动VC++6.0新建一个Win32Console Application工程,建好后,新建-文件-C++ source File , 在头部加上#include <stdio.h>#include <stdlib.h>然后就可以编译C语言写的了启动VC++6.0新建一个Win32Console Application工程,建好后,新建-文件-C++ source File,在头部加上#include #include 然后就可以编译C语言写的了6,编译器在编译阶段究竟做哪些事情1. 预处理首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp预编译成.i文件(C++为.ii) 。预处理命令为:gcc –E hello.c –o hello.i预编译过程主要处理那些源代码中以#开始的预编译指令 , 主要处理规则如下:u将所有的#define删除,并且展开所有的宏定义;u处理所有条件编译指令,如#if,#ifdef等;u处理#include预编译指令,将被包含的文件插入到该预编译指令的位置 。该过程递归进行,及被包含的文件可能还包含其他文件 。u删除所有的注释//和 /**/;u添加行号和文件标识,如#2 “hello.c” 2,以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号信息;u保留所有的#pragma编译器指令 , 因为编译器须要使用它们 。2. 编译编译过程就是把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件(.s) 。编译的命令为:gcc –S hello.i –o hello.s或者从源文件直接输出汇编代码文件:gcc –S hello.c –o hello.s现在版本的GCC把预编译和编译两个步骤合并成一个步骤,由程序cc1来完成(C++为cc1plus) 。3. 汇编汇编就是将汇编代码转变成机器可以执行的命令,生成目标文件(.o),汇编器as根据汇编指令和机器指令的对照表一一翻译即可完成 。汇编的命令为:gcc –c hello.s –o hello.o或者从源文件直接输出目标文件:gcc –c hello.c –o hello.o4. 链接链接就是链接器ld将各个目标文件组装在一起,解决符号依赖,库依赖关系,并生成可执行文件 。链接的命令为:ld –static crt1.o crti.o crtbeginT.o hello.o –start-group –lgcc –lgcc_eh –lc-end-group crtend.o crtn.o一般我们使用一条命令就可以完成上述4个步骤:gcc hello.c实际上gcc只是一些其它程序的包装 , 它会根据不同参数去调用预编译编译程序cc1、汇编器as、链接器ld 。c编译器也有很多很多种,不同的编译器使用方法都不一样,建议你去安装个vc6

    推荐阅读