汇编语言的模拟编译器
① 汇编语言的编译器是运行在什么平台上
机器可以识别的是高低电平,将高低电平用 0,1 来对应表达,就是二进制代码
二进制代码肯定是不便于记忆的,因此,为了便于记忆,将可以执行一项功能的二进制代码段用一个符号来代替,就产生了汇编语言。
那么汇编的过程,就是将这个符号还原成二进制代码的过程。
这个过程,可以由人工来做,由机器来做...
那么,我们的电脑上来完成这个过程的,就是传说中的编译器。
这个汇编的编译器是怎么做成的?是直接用二进制代码0和1写的吗?
编译器本身就是一个可执行程序。
编写这个可程序,和编写通常程序的过程相同,所以随意用什么语言来写。然后再通过编译,生成可执行程序。
那这个二进制的0、1是以什么形式存放的,存放在哪里?
可执行程序是什么形式的,取决于操作系统。
存放形式,取决于存储器的物理性质,可以肯定的是存放在存储器。
如果用我们的电脑,怎么输入这些0、1,让电脑识别?
用我们的电脑,需要通过输入设备来输入,通常为键盘、鼠标...
过去就像楼上说的,也有用纸带、拨码开关或者其他什么的。
----------------------------------------------
其实我就是想弄明白硬件和软件是怎么锲和的,操作系统这个巨大的软件可以直接在电脑硬件上运行,那其他软件为什么一定要在操作系统上才能运行呢?
其他的软件不是一定要在操作系统上才能运行。只是,操作系统使软件的运行不必考虑硬件的差别,也就是说,针对操作系统平台所编写的程序可以适用于该操作系统可以运行的所有硬件平台,而不必针对每一个不同的硬件都编写一个程序。
是不是要调用系统里面的一些库文件啊?如果是,那windows怎么不需要啊?它怎么能只凭自己在安装时所带的那一套各种各样的文件就能在裸机上运行了呢?
WINDOWS本身就是操作系统...
那个,你要实在想明白这个问题,就看看计算机组成原理还有软件工程的相关内容吧。
② 求汇编语言编译器
微软的是MASM32套装,可以在Windows下使用。
NASM也是一个使用较多的汇编器,搜索“NASM"即可找到。但在Windows下使用一般要求搭配适当的连接器(连接程序Link),可以使用ALink等。
③ 汇编语言编译器是怎么来的
第一个软件,显然是用机器语言写的。
当用机器语言写成了文字处理软件,才能用屏幕、键盘打字。
当用机器语言写成了编译软件,才能把打好的字,编译成机器码。
④ 求用汇编语言写的编译器
用汇编语言写的编译器,有什么特征啊?
你根据什么,来确定,是不是【用汇编语言写的】?
⑤ 用intel8086/8088汇编语言写的程序用什么编译器编译最好啊
用masm或者是tasm就可以了,感觉上写8086/8088以及80386的保护式编程用tasm比较好,写Win32Asm用masm比较好。推荐你使用8086emulator这个软件。模拟8086的,专门用来练习实模式汇编。emu8086v2.75版,还有注册机。是一个很优秀的模拟软件。很好用的,在里面你可以观察寄存器,内存,还有其他的运行内容。
推荐你一个网站:asm.yeah.net
⑥ 汇编语言编译器是怎么编写的
编译器自举!搜索这个关键字
程序都是编译器编译的。这个是肯定的
至于第一款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等动态语言
虎书中也有描述。当然看自己功力了
⑦ 汇编语言的编译器是用什么语言写的,为什么
直接用指令码写出第一个汇编语言编译器,然后就可以用汇编语言写新的编译器,其实很多语言都可以写汇编编译器
比如第一个C语言编译器可能是用汇编写的,但是以后的C编译器都可以用C语言来写,神奇吧,哈哈
⑧ at89c51汇编语言编译器
强烈建议用伟福仿真器,上手容易,keil也不错,我这两个都有,但我仿真头是伟福的,调试软件只要离线仿真基本都能挑出语法错误,并且都支持c和汇编的混合编程,所以要说功能的话我也不能说伟福比keil好,最好问你老师,学校里的方针头是什么的,是哪个牌子的就用哪个就好了。由于本人编程基本都用伟福所有建议伟福。
你自己没编过,不知道,实际上单片机的汇编是很容易学的,重要的是实践,就是硬件调试,这个是最难的,至于快点学好编程,容易啊,你先编一个小灯程序,开始用延时即nop循环编,在用定时器编,在用计数器编,最后用中断编,一套练下来,你就掌握了计数器定时器的应用,之后再网上下一个串口即232的观察程序,之后连接3条232线(注不要用usb转232必须有232口)之后往里送数,即串行通信里送数,这样你的通讯就会了,之后用一个普通的口模拟232送数,这样你就把两部分综合到一起了。并且对硬件也会有所了解。这就是一种学习方法,慢慢你就懂了,你可以加我好友,我白天工作一天就玩上在线,我不是很有时间,但我可以把我自己总结的最经典的一句话告诉你,毕竟我也是学自动化的,至今本人觉得自己的总结这句话适用于dsp plc pic等一切编程。。我有点狂了,呵呵。也可能我工作2年工作经验尚浅,我觉得最关键的不是语言,而是硬件调试,程序不论多么复杂都是可以解决的,但硬件调试才看出一个电气工程师的真正水准
⑨ 用什么样的汇编语言编译器好
学习时,建议不要使用别人做好的集成环境,而是使用单独的汇编、连接和调试工具。
因为,汇编语言一般不是个人所学的第一门程序设计语言。使用单独的汇编工具,有助于更清楚地了解语言程序的处理生成过程,更灵活地使用命令选项。这对达到学习汇编语言的学习目的---->更深入地了解计算机系统,有很大的帮助。
我推荐使用TASM 5.0
它全兼容MASM 6,且有所增强,甚至可以在一定程度上支持面向对象技术。
它最大的优势是所配的调试程序:Turbo Debugger,功能强大,界面友好,易学易用,非常非常的棒。
如果你是在32位的操作系统如XP、WIN7等里面用它,需要将TD的工作方式设成WIN 95兼容模式运行。
如果是在64位的系统中使用,则必须要安装一个DOSBox ,在它提供的纯DOS环境中运行。
至于汇编源程序的编辑器,可以使用的工具有很多选择,比如UltraEdit就很不错。