Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1356704
  • 博文数量: 179
  • 博客积分: 4141
  • 博客等级: 中将
  • 技术积分: 2083
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-21 20:04
文章存档

2024年(1)

2019年(13)

2016年(1)

2014年(16)

2011年(8)

2010年(25)

2009年(115)

分类: 嵌入式

2009-03-22 11:18:33

函数流程图:


1.  do_directive函数简介:

1)       PP_STACKSIZE:Tasm兼容,定义函数参数的各项属性

2)       PP_ARG:Tasm兼容,将参数定义转换成单行宏定义

3)       PP_LOCAL:Tasm兼容,将本地变量转换成单行宏定义

4)       PP_CLEAR:消除之前所有的预定义宏

5)       PP_INCLUDE:插入 include文件并打开该文件

6)       PP_PUSH:插入Context实例

7)       PP_REPL:更改Context名字

8)       PP_POP:删除Context实例

9)       PP_ERROR:输出%error错误信息

10)    PP_IF,PP_IFCTX,PP_IFDEF,PP_IFID,PP_IFIDN,PP_IFIDNI,PP_IFMACRO,PP_IFNCTX,PP_IFNDEF,PP_IFNID,PP_IFNIDN,PP_IFNIDNI,PP_IFNMACRO,PP_IFNNUM,PP_IFNSTR,PP_IFNUM,PP_IFSTR,PP_ELIF,PP_ELIFCTX,PP_ELIFDEF,PP_ELIFID,PP_ELIFIDN,PP_ELIFIDNI,PP_ELIFMACRO,PP_ELIFNCTX,PP_ELIFNDEF,PP_ELIFNID,PP_ELIFNIDN,PP_ELIFNIDNI,PP_ELIFNMACRO,PP_ELIFNNUM,PP_ELIFNSTR,PP_ELIFNUM,PP_ELIFSTR:添加Cond实例

11)    PP_ELSE:更改Cond实例状态

12)    PP_ENDIF:删除Cond实例

13)    PP_MACRO,PP_IMACRO:先初始化 defining,设置相关属性

14)    PP_ENDM, PP_ENDMACRO:将defining插入 mmacros 中

15)    PP_ROTATE:在 pass0 不处理

16)    PP_REP: 利用 evaluate 计算重复次数,设置defining相关属性,将之插入defining链表中

17)    PP_ENDREP: 将 defining 的头一个元素插入 istk->defining

18)    PP_EXITREP: 在 pass0 不做处理

19)    PP_XDEFINE, PP_IXDEFINE, PP_DEFINE, PP_IDEFINE:获取预处理信息,处理相关宏,参数,然后根据预处理信息插入相关的链表

20)    PP_UNDEF: 删除相关的宏定义

21)    PP_STRLEN:计算字符串长度,作为单行宏插入相关链表

22)    PP_SUBSTR:

23)    PP_ASSIGN,PP_IASSIGN:调用eval.c的evaluate函数计算assign指定的值

24)    PP_LINE:略

 
 
 
 
阅读(1480) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~