机器语言,汇编语言和编译器优质PPT.pptx
- 文档编号:1501149
- 上传时间:2023-04-30
- 格式:PPTX
- 页数:27
- 大小:251.73KB
机器语言,汇编语言和编译器优质PPT.pptx
《机器语言,汇编语言和编译器优质PPT.pptx》由会员分享,可在线阅读,更多相关《机器语言,汇编语言和编译器优质PPT.pptx(27页珍藏版)》请在冰点文库上搜索。
CMPEQC,CMPLTC,CMPLEC布尔:
ANDC,ORC,XORC位移:
SHLC,SHRC,SARC,6.004Fall2002,10/22/0,L13MachineLanguage2,分:
BNE/BT,BEQ/BF(const=从PCNEXT转移的字组(word)数)跳跃:
JMP(constnotused)内存存取:
LD,ST(const=从Regra偏移的字节(byte)数)HowcanweimprovetheprogrammabilityoftheBeta?
二的补码的16位常数,表示从32768到32767的数字;
使用前将它延伸符号至32位.,编码二进制指令,32-bit(4-byte)ADD指:
OpCodeRc,6.004Fall2002,10/22/0,L13MachineLanguage3,Ra,Rb,(unused),对BETA来说,表示Reg4=Reg2+Reg3,但,我们通常喜欢写成ADD(R2,R3,R4),(汇编语言),或,再好一点,a=b+c;
(高级语言),软件达成方法:
解译,编译,解译,Turing的解译模型:
从某个”写程序”的通用计算机,称之M1,开始写一个小的M1程序来模仿一个比较容的计算机,称之M2结果:
一个”虚拟”的M2,解译的“层级”:
通常我们可以使用多个解译层级来达到想要的为,如:
X86(Pentium),执系统(Scheme),执应用程序,解译资.,6.004Fall2002,10/22/0,L13MachineLanguage4,编译,6.004Fall2002,10/22/0,L13MachineLanguage5,编译模型:
给定某个”写程序”的计算机,称之M1.找到某个”容写程序”的语言L2(也许是一个复杂的计算机,M2);
以这个语言来写程序建一个翻译器(编译器)可以将程序从M2语言翻译成M1语言.可以在M1,M2,或其它的计算机上执.解译&
编译:
两种帮助加强可程序性的工具.两者都可以改变程序模型两者都提供与平台(如,处器)无关的程序应用两者都在现代计算机系统中被广泛使用!
解译与编译之比较,这两个强的工具之间有一些特性上的差异.,我们会重复看到旳主要的设计选项:
在编译时间或执时间做?
解译,编译,如何处“x+2”,何时发生,哪复杂/慢,何时做决定,计算x+2,产生一个程序来计算x+2,执时,执前,程序执,6.004Fall2002,10/22/0,L13MachineLanguage6,程序建构,执时间,编译时间,6.004Fall2002,10/22/0,L13MachineLanguage7,软件:
抽象对策,第一步:
编译工具组合器(UASM):
机器语言的符号表示式编译器(C):
算法的符号表示式接下来的步骤:
解译工具操作系统应用程序(如:
浏览器),隐藏:
位级的表示式,16进位地址,二进制数值隐藏:
机器指,缓存器,机器架构,隐藏:
资源(内存,CPU,I/O)限制及细节隐藏:
网络;
地址;
区域参数,抽象步骤1:
一个写程序的程序,UASM-6.004(宏)使用的汇编语言,将被加载内存的字节,6.004Fall2002,10/22/0,L13MachineLanguage8,UASM:
一个符号表示的语言,用以表示字符一个程序(“组合器”=简的编译器),将UASM来源翻译成二进制文件.,符号表示之来源文字文件,UASM翻译程序,二进制机器语言,UASM原始语言,一个UASM原始文件包含,符号表示的文字,将被加载内存的连续字节的数值.如:
以下的格式十进制(预设);
二进制(按:
使用“0b”字头表示);
十进制(按:
使用“0x”字头表示);
数值也可以是运算表示式;
如,原始档,产生4字节的二进制输出,每一个都表示数值23!
6.004Fall2002,10/22/0,L13MachineLanguage9,符号表示之手势,特殊变数“.”(点)表示下一个将被填入的字节地址:
|组合成100|符号“five”是0x104|过16个字节,我们也可以在原始文件中定义”符号”来使用:
缓存器的符号名称:
另一个变数,一个变地址,6.004Fall2002,10/22/0,L13MachineLanguage10,“直线”代表一段批注的开始它的后面直到末都是被忽的,卷标(表示地址的符号),卷标是表示内存地址的符号.它们可以透过以下的特殊语法来设定:
x:
是“x=.”的缩写子-,6.004Fall2002,10/22/0,L13MachineLanguage11,主存储器,强而有的微指,x%256(x/256)%256,6.004Fall2002,10/22/0,L13MachineLanguage12,WORD(x)WORD(x16),.macroWORD(x).macroLONG(x)=0x100,LONG(0xdeadbeef)会有如下的效果:
宏乃是参数化的缩写,或简写|产生四个连续字节的宏:
.macroconsec(n)nn+1n+2n+3|呼叫上述的宏:
consec(37)会有如下的效果:
37383940以下示范宏如何将多字节的数据型式以一个字节来表示|组合little-endian的字节:
ForExample:
ADDC(R15,-32768,R0)-betaopc(0x31,15,-32768,0),指之汇编语言,“.align4”确保指会在字组(word)的边缘开始(如address=0mod4),“.align4”确保指会在字组(word)的边缘开始(如address=0mod4),6.004Fall2002,10/22/0,L13MachineLanguage13,组合Beta的branch指,组合Beta的opc指,组合Beta的op指,最后,Beta指,方的宏.因此我们需要指定R31缓存器,6.004Fall2002,10/22/0,L13MachineLanguage14,(采自beta.uasm),汇编语言的子,计算表示式,6.004Fall2002,10/22/0,L13MachineLanguage15,计算表示式,并以X=0xC223展开第二个WORD宏,以X=0xC22304D2展开第一个WORD宏,以X=0xC22304D2展开LONG宏,以OP=0x30,RA=R3,CC=1234,RC=R17展开beta的opc宏,以RA=R3,C=1234,RC=R17展开ADDC宏,找到指?
假造一个!
方的宏可以用来延伸我们的组个语言:
(采自beta.uasm),6.004Fall2002,10/22/0,L13MachineLanguage16,抽象步骤2:
高级语言,大部分的算法是以高阶的语言来表示.如以下的算法:
我们用(并将会继续在6.004课中使用)C语言.它是一个”成熟”而且常见的系统.较新常用的代替语言有:
C+,Java,Python,以及很多其它的.,为么用汇编语言而要用这个呢?
可读性简洁清楚,会模棱两可可携带(算法经常存活地比硬件平台来得久)可靠(数据型态检查,等等),参考:
C讲义(6.004网页),6.004Fall2002,10/22/0,L13MachineLanguage17,6.004Fall2002,10/22/0,L13MachineLanguage18,编译器是如何运作的呢?
编译器所做的事并全是那么地复杂.(至少,原则上),当化的编译器远比UASM的宏延伸还做的多.它们执精细的原始码分析使用特定的算法来产生给目的计算机用的有效的程序代码对原始码及目标程序码都采“最佳化”程序,以得到较好的执时间效能.编译一个未最佳化的程序代码是很直接的.以下是一些简短的介绍.,编译表示式,C语言码:
Beta汇编语言码:
变被指定为内存位置,并透过LD或ST来存取操作翻译成ALU指小常数翻译成“文字模式”ALU指大常数翻译成初始化的变数,6.004Fall2002,10/22/0,L13MachineLanguage19,数据结构:
数组,C原始码,可能翻译成:
地址:
常数为基底的地址+由引计算得到的变偏移,地址:
常数为基底的地址+由引计算得到的变偏移,6.004Fall2002,10/22/0,L13MachineLanguage20,内存:
数据结构:
结构,可能翻译成:
x组件的偏移y组件的偏移,内存:
变为基底的地址+常数的组件偏移,地址:
变为基底的地址+常数的组件偏移,6.004Fall2002,10/22/0,L13MachineLanguage21,条件式,Ccode:
Betaassembly:
Ccode:
Beta汇编语言:
编译条件码区块时,有一些小小的技巧.举来说,以下的表示式:
编译成:
并没有32这样的指!
6.004Fall2002,10/22/0,L13MachineLanguage22,替代的Beta汇编语言:
循环,编译器要花上许多的时间把循环面和周遭最佳化.把所有可能的计算移到循环外面展开循环来减少分指产生的效能消耗化简表式示对“循环变”的依赖,把这个测试式移到循环的后面并且第一次在这跳到那个测试式这样可以一个分指,C程序代码:
6.004Fall2002,10/22/0,L13MachineLanguage23,最佳化我们最爱的阶乘程序,done:
loop:
聪明之处:
没有直接当地编译(循环中有11个指.),聪明之处:
没有直接当地编译(循环中有11个指.),6.004Fall2002,10/22/0,L13MachineLanguage24,最佳化,聪明之处:
把LD与ST指移到循环外面!
(在循环中还有5个指.),聪明之处:
(在循环中还有5个指.),6.004Fall2002,10/22/0,L13MachineLanguage25,完成最佳化,幸地,聪明之处:
避免条件判断式的消耗!
(现在循环中只剩3个指.),聪明之处:
(现在循环中只剩3个指.),6.004Fall2002,10/22/0,L13MachineLanguage26,6.004Fall2002,10/22/0,L13MachineLanguage27,下回:
程序及堆栈,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器语言 汇编语言 编译器