• NASM手册阅读笔记(4)


    基本格式

        %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
  • 相关阅读:
    基础
    基础
    基础
    基础
    基础
    基础
    基础
    基础
    Gym102361A Angle Beats(直角三角形 计算几何)题解
    Petrozavodsk Summer Training Camp 2016H(多标记线段树)题解
  • 原文地址:https://www.cnblogs.com/alwaysking/p/12287441.html
Copyright © 2020-2023  润新知