Loading

汇编语言中ifidn和ifdif的作用

来源

在isa-l项目里的汇编文件中看到了有ifidn之类的写法,代码如下。第一遇到,便查阅资料记录一下用法。

%ifidn __OUTPUT_FORMAT__, elf32
 [bits 32]
%else
 default rel
 [bits 64]

ifidnIFIDN(大小写都可以),是两条伪指令,用于对两个宏定义的参数进行比较,最初误以为用法类似条件编译ifdef

IFIDN:比较两个参数相同

IFIDN比较参数1和参数2,若两参数相同,则处理条件内的语句块,否则跳过条件内的语句块或者处理反条件内的语句块。

%ifidn <参数1>,<参数2>
 //两参数相同
%else
 //两参数不同

IFDIF:比较两个参数相同

IFDIF比较参数1和参数2,若两参数不同,则处理条件内的语句块,否则跳过条件内的语句块或者处理反条件内的语句块。

%ifdif <参数1>,<参数2>
 //两参不同
%else
 //两参数相同

IFIDNI和IFDIFI:表示参数大小写不敏感

若用IFIDNI替代IFIDN,用IFDIFI替代IFDIF,则表示对参数拼写的大小写不敏感。

  • IFIDN 伪指令执行的是区分大小写的比较。
  • IFIDNI 伪指令在两个符号(包括宏参数名)之间进行不区分大小写的比较,如果它们相等,则返回真。
posted @ 2023-07-20 17:10  刘跑跑  阅读(161)  评论(0编辑  收藏  举报