NASM源代码分析--预处理数据结构

NASM源代码分析--预处理数据结构

       我是在读研究生,09年毕业,以前看过部分Linux源代码和BSDTCP/IP协议,因为没有太全的资料,所以只看了比较重要的部分,没有看全。虽然看源代码是学编程最快捷的方法,但不得不承认看别人的代码有时候是一种煎药,特别是在没有详细的说明和注释的情况下。

由于之前用过一段时间的NASM用来编写一个小病毒,所以才有了看NASM源代码的想法。不过刚开始看NASM源代码的时候,确实有过一段低潮,因为除了源代码,就没有其他中文资料了,还好它的注释写得还是比较详细的。看完之后想留下点什么,所以就有了下面这些学习笔记,希望能给那些看NASM源代码的朋友一点帮助。

 

我是各学理科的,所以文笔不是很好,请大家谅解。当然这些记录肯定也有不对的地方,欢迎大家和我交流探讨,我的E-MAIL:huguozhu@gmail.comhuguozhu@sohu.com,谢谢大家。

 

 

       本文是对前几篇文章的合计,没有新内容,预处理所有重要的数据结构都在这里了。

 

NASM源代码分析之预处理(1

       NASM源代码的整体框架,互联网上已经有资料介绍了,具体的大家可以参见《NASM源码阅读笔记》一文。

       NASM编译源代码的时候,分为三种情况,分别是:

       1):只产生文件依赖关系(operating_mode = op_depend);

       2):只进行预处理(operating_mode = op_preprocess);

       3):预处理并生成目标代码(operating_mode = op_normal)。

 

       第一种情况比较简单,代码量也比较少,很容易就看明白。第二种情况比第一种要难很多,而且涉及的数据结构也很多,刚开始看的时候很容易就看晕了。所以本人根据近段时间以来看代码的体会,总结了下面的内容,希望能给那些看NASM代码的朋友一些帮助。这也是我第一次用这种方式写下我的总结,肯定有不全,甚至时错误的地方,欢迎大家批评指正。我的QQ79943558

      

       preprocess.c是处理预处理的最主要的文件,里面包括了几乎全部关于预处理的内容。其中最基本的结构是Token结构,代码如下:

struct Token                      

{

    Token *next;                

    char *text;                    // 代表的Token内容,如"if"""

       SMacro *mac;                  // 当指向的类型为TOK_SMAC_END有效

       int type;                        // Token类型

};

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值