《编译原理》学习第 3 天,p18总结,总计 14页。
一、技术总结
1.assembler
(1)计算机结构
要想学习汇编的时候更好的理解,要先了解计算机的结构,以下是本人学习汇编时总结的一张图,每当学习汇编时,看到“计数器”,“解码器”,“寄存器”,“数据总线”等概念时,就知道说的这些东西在哪个位置。
(2)assembly code(汇编代码)
p17,Some compilers produce assembly code, as in (1.5), that is passed to an assembler for further processing.
MOVF id3, R2
MULF #60.0, R2
MOVF id2, R1
ADDF R2, R1
MOVF R1,id1
上面汇编代码对应的代码为:
temp1 := id3 * 60.0
id1: = id2 + temp1
这里提到了汇编代码,所以我们在阅读本书时需要有一点汇编语言基础:
(3)指令(instruction)
如MOVF, F表示Floating-point numbers。注意,指令有两种语法,分别是Intel 语法和AT&T语法。支持Intel语法的主要是Windows系统,支持AT&T语法的主要是Unix系统。
Intel 语法:mov dest, src
AT&T 语法:mov src, dest
参考:https://en.wikipedia.org/wiki/X86_assembly_language
p15, The first and second operands of each instruction specify a source and destination, respectively…This code moves the contents of address id3 into register2, then multiplies it with the real-constant 60.0.——书里使用的是AT&T语法,本书作者之一Alfred V.Aho与AT&T的关系:Alfred V.Aho is head of the Computation Principle Research Department at AT&T Bell Laboratories in Murray Hill New Jersey。
(4)#号
表示intermediate data。
2.machine code
0001 01 00 00000000
0011 01 10 00000010
0010 01 00 00000100
如上所示称为machine code, 当我们看到“machine code”这个词的时候我们要想到上面的代码。
二、其它
进入六月以来,每天都忙于加班,疲于奔命,阅读《编译原理》几乎无进度,然而内心觉得这并不是我想要的,因为长此以往,就会停不前,还是要每天学习一些新的东西;二是,自己也不喜欢这样重复的去做相同的事。所以,我又折回来继续看书了。
四、参考资料
1. 编程
(1)Alfred V. Aho,Monica S. Lam,Ravi Sethi,Jeffrey D. Ullman,《编译原理(英文版·第1版)》:https://book.douban.com/subject/5416783/
2. 英语
(1)Etymology Dictionary:https://www.etymonline.com
(2) Cambridge Dictionary:https://dictionary.cambridge.org
欢迎搜索及关注:编程人(a_codists)