Home avatar

时光似海

Compiler2_语法分析

分析的任务是确定程序的语法,或称作结构,也正是这个原因,它又被称作语法分析(syntax analysis)。程序设计语言的语法通常是由上下文无关(context-free grammar)文法规则(grammar rule)给出,其方式同扫描程序识别的由正则表达式提供的记号的词法结构相类似。上下文无关文法的确利用了与正则表达式中极为类似的命名惯例和运算。二者的主要区别在于上下文无关文法的规则是递归的(recursive)。例如一般来说,if 语句的结构应允许其中可嵌套其他的 if 语句,而在正则表达式中却不能这样做。这个区别造成的影响很大。由上下文无关文法识别的结构类比由正则表达式识别的结构类大大增多了。用作识别这些结构的算法也与扫描算法差别很大,这是因为它们必须使用递归调用或显式管理的分析栈。用作表示语言语义结构的数据结构现在也必须是递归的,而不再是线性的(如同用于词法和记号中的一样)了。经常使用的基本结构是一类树,称作分析树(parse tree)语法树(syntax tree)

Compiler1_词法分析

字符流到记号流

字符流: 和被编译的语言密切相关(ASCII, Unicode, …)

记号流:编译器内部定义的数据结构,编码所识别出的词法单元

计算机网络

OSI七层协议

osi七层协议

实际使用中 TCP/IP 协议族是一个四层协议

  • 应用层
  • 传输层
  • 网络层
  • 数据链路层

ip数据报头部

udp头部

tcp头部

tcp流量控制

tcp状态

AT&T汇编-x86

x86CPU下AT&T汇编

与AT&T汇编对应的是inter汇编,还有go的plan9

c data type typical 32-bit x86-32 x86-64
char 1 1 1
short 2 2 2
int 4 4 4
long 4 4 8
long long 8 8 8
float 4 4 4
double 8 8 8
long double 8 10/12 10/16
cahr * 4 4 8
  • at&t汇编语言数据格式
c声明 inter数据类型 汇编代码后缀 大小(byte)
char 字节 b 1
short w 2
int 双字 l 4
long 双字 l 4
long long 4
char * 双字 l 4
float 单精度 s 4
double 双精度 l 8
long double 扩展精度 t 10/12

mov? S,D