NASM手册阅读笔记 - 预处理器之条件汇编

基本格式

    %if<condition>

    %elif<condition>

    ……;elif 的数量不限制

    %elif<condition>

    %else ;else也可由可无

    %endif

    

    所以基本就是C 的语法

    

条件判断

指令

%if <condition>

%elif <condition>

说明

这就是最基本的条件判断了  <condition> 可以是一个表达式, 当然表达式的值必须能在编译阶段求出才行。

测试单行宏

指令

%ifdef MACRO

%ifndef  MACRO

%elifdef MACRO

%elifndef MACRO

说明

这个宏就是判断某个单行宏的定义存不存在的,这在C/C++里面是经常用到的,尤其是 判断DEBUG和RELEASE的时候

测试多行宏

指令

%ifmacro  MyMacro 1-3

%ifnmacro MACRO

%elifmacro MACRO

%elifnmacro MACRO

说明

和单行宏的测试是一样的,只不过是需要当上宏参数个数的

判断上下文堆的栈顶的名称

指令

%ifctx ctxname

%ifnctx ctxname

%elifctx ctxname

%elifnctx ctxname

说明

这是判断山下文堆的栈顶的元素的名称的,上下文堆之后会将    

字符串判断

指令

   %ifidn / %ifidni

格式

%ifidn  text1, text2

说明 

 当text1 与 text2 相等时成立 text1 和 text2 不需要引号括起来 %ifidn  abc,cde 这样即可

%ifidn  区分大小写

%ifidni  不区分大小写

%macro  pushparam 1                 

        %ifidni %1,ip               

             call    %%label          

            %%label:          

        %else               

             push    %1          

        %endif              

%endmacro 

    

类型判断

指令

   %ifid / %ifnum / %ifstr

说明   

判断数据是否是 标识符(label) 字符串 数字 

    

比如

%macro writefile 2-3+                   

            %ifstr %2         ; 当参数2 是字符串的时候   

                jmp     %%endstr            

            %else

            %%endstr:

            %endif

%macroend

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值