导航:首页 > 源码编译 > 汇编是如何编译的

汇编是如何编译的

发布时间:2022-06-27 23:11:43

❶ C语言里嵌入的汇编,是怎么编译处理的

这个过程不是“反编译”而是“编译”。 正常编译过程中都会生成临时汇编文件的,你可以在项目选项中的lst输出中勾选Assembly,即将编译的中间汇编代码输出到LST文件中。

❷ 汇编怎么编译程序

编程序设计-王爽.上面有详细的过程.你学过的汇编书上没有介绍?神奇!

❸ 如何对汇编语言进行编译

初学的话建议用masm和link。这个是俩个可执行文件,一个编译用,一个连接用。一般下载还有个ml的是俩个的集合体。别的不多说我用的就是这个,或者你去网络上下载一个

❹ 汇编语言编译器是怎么编写的

编译器自举!搜索这个关键字
程序都是编译器编译的。这个是肯定的
至于第一款X语言编译器是不是直接1010101010自己写的那就不知道啦

一般开发编译器的话。有两条路选择
1.利用yacc(或者其变种)&lex(词法分析)-等工具自己生成语法模板
词法语法都可以使用这些工具自己生成
然后自己编写生成的中间码和生成的机器码就可以了
一般做编译原理类似试验都是如此的。许多编译器也的确是这样

2.自己写词法分析和语法分析。可以参考一些开源的编译器
lcc-这个是ANSI C99标准的编译器是开源的
或者nasm,watcom等编译器到www.sf.net上不少开源的编译器

总的来说。高级语言编译器比较难写
如果想快速写出一个的话
可以采用第一种做法。利用工具生成语法词法模板
先写一个简单的汇编编译器比较简单
开源的有nasm,jwasm(支持masm语法开源的编译器)
http://www.japheth.de/JWasm.html
fasm(这款编译器是自举的.就是自己可以编译自己),
http://flatassembler.net/

剩下的就是自己做好语言规则关键字map
引用高手的话。语言map做好了你的编译器也做好一半了
剩下的都是机械性的工作了。
生成x86或者arm指令。

优化工作这个很难解释.根据你所需要的做吧
毕竟可以做出一个无错,又XX的编译器已经很难得

你可以选择使用现有的编译器开发自己的编译器
然后等到你的编译器支持相当数量指令和成熟度的时候
使用自己的语法重新写一遍编译器.
这样你就可以用自己的编译器开发自己的编译器了(是不是很邪恶?)

另外举几个例子
Delphi的编译器是C++ Builder开发的。
而C++ Builder的IDE是Delphi开发的
C++ Builder的编译器是C++ Builder开发的-这个就是编译器自举了。。Delphi和C++ Builder共享一个后端化优化器。
Delphi 早期的版本的编译器是tasm直接编译的。可见Anders的汇编功力多强悍(Anders也就是后来VJ++,C#,.NET工程的核心架构师.最关键的灵魂级人物)

VC++的编译器是VC++开发的。很明显这都说明了编译器自举
自己开发自己。如果一个编译器可以做到自己编译自己。那基本上就可以实现任何功能了。

关于编译器开发的书籍可以看一下
龙书《编译原理(第二版)》
虎书《现代编译原理-C语言描述》
鲸书《高级编译器设计与实现》
建议从鲸书看起。然后是龙书
再来是虎书--虎书里面描述了许多现代编译器(正如其名)技术
例如面向对象啦,优化,垃圾回收等等.
鲸书看完基本上就可以实现一个简单的Tiny C编译器了
然后在龙书巩固,读一下语言规范,自己看一些开源的汇编编译器代码
自己就可以尝试做一个汇编语言编译器了.等到技术提高了
在尝试做一些高级语法识别,参考LCC代码做一下ANSI C99的
C语言编译器。再来就看你自己的兴趣和领悟度拉
如果想支持C++的话就得要对编译器做许多方便的研究

类似Java那种跨平台或者Ruby,Python等动态语言
虎书中也有描述。当然看自己功力了

❺ 汇编与编译

编译(compilation
,
compile)
1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。
用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。

❻ 汇编语言编译

1、编程语言包含汇编语言,汇编语言只是编程语言的一种。
2、编程语言:
编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
3、汇编语言:
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

❼ 怎么编译汇编语言程序

计算机硬件系统只懂自己的指令程序,而不懂其他语言程序。因此,想用汇编语言或高级语言,则必须有这样一程序,它将用汇编语言或高级语言写成的程序转换成等价的机器语言程序,我们称这种程序(转换)为翻译程序(Translator),把汇编语言的翻译程序称为汇编程序( Assembler ),把高级语言的翻译程序称为编译程序( Comiler )。编译程序也称为编译器,它的输入对象称为源程序( Source program ),输出对象称为目标程序( Object program )。

❽ 汇编编译器的工作和生成可执行文件的执行过程是怎样的

汇编器,先生成目标代码,其中有一些数据,代码,还有一些表(重定位表等)
然后调用链接器,链接成可执行文件。

早期的汇编器,只负责生成目标代码,链接器是一个独立的程序。
需要手工分别作汇编,和链接

现在的汇编器,可以合并这两步,直接调用链接器,是直接生成可执行文件。

伪指令是汇编命令,是用来操作汇编器的命令。
不是指令,不生成对应的代码。

CPU只能识别二进制代码,数据通过加载器的加载,或者烧写器的烧写,初始化,有些代码,会在加载时重新定位。
代码也可能是烧写的,比如BIOS代码。
对于PC:
操作系统的启动代码,是由BIOS中的专门代码;
从磁盘的固定位置,加载在内存的固定位置的。
操作系统的其他部分,是由操作系统的启动代码加载的。

阅读全文

与汇编是如何编译的相关的资料

热点内容
帝国时代java下载 浏览:51
数据结构的经典算法题 浏览:192
逍遥安卓多开管理器是干什么的 浏览:912
程序员收玉米一天多少钱 浏览:353
程序员很可爱根据哪本小说改编的 浏览:982
游戏旧版安卓怎么玩 浏览:261
冗余单片机 浏览:846
cad抽壳命令怎么用 浏览:27
服务器第一地址怎么改 浏览:494
单片机最小系统电路设计流程图 浏览:663
steam源码 浏览:29
关于对数的运算法则及公式 浏览:775
明星谈如何缓解压力 浏览:143
androidlistview隐藏列 浏览:400
plc跑马灯编程 浏览:821
ios开发之网络编程 浏览:427
处理照片视频哪个app好 浏览:390
logback压缩 浏览:894
冰箱压缩机可以用气割吗 浏览:535
菜鸟如何加密商品信息 浏览:321