UCC编译器学习笔记1

UCC编译器学习笔记1,第1张

  • 其实语法分析,就是对每一种语句(穷举),都要用一个结构体,进行精确全面描述出来。
  • 里面的任意一个token,比如标识符名字“a”,在词法分析阶段,只存在一份实体,因此两个token是否名字相同,只需要判断它们的地址是否相同即可,这个在别的地方判断两个symbol是否相同,也是如此连symbol都会只有一份
  • 标准C语言,结构体中的成员是可以指定所占位数的,下面的ST类型表示struct st *

typedef struct st

{

int a:8;

int b:24;

int c;

}* ST

其结构在UCC中构造为如下所示:

  • X86汇编其实比arm汇编使用起来其实更通俗易懂,arm汇编都是以最基本的元指令了,是等长的,因此CPU设计电路实现简单。而X86汇编指令是变成的,因此会更加容易实现自己想要的功能,能够直接在指令中写变量名,这个确实好用很多,当然还有很多其它好用的特性。而且浮点运算单元这些,支持也很好。很多时候一条汇编指令就能完成c语言中的语句,确实好用啊。

     
  • UCC中把memalloc函数分配出来的内存块进行分类管理,形成多个堆heap。比如,字符串 *** 作相关的内存块,串起来形成一个heapFile这样的,语法树处理过程申请的相关的内存块串起来形成heapAST这样的。然后还有个CurrentHeap*全局变量,用于指示当前 *** 作的是哪个堆,因为堆 *** 作函数都是用默认的CurrentHeap*变量来 *** 作对应的堆。每个堆,下次再运行,只是在堆内标记所有的块为空闲块,并没有实际的free掉。
  • vector,存储布局,因此就是个指针数组嘛

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/789127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存