汇编语言中ifidn和ifdif的作用
来源
在isa-l项目里的汇编文件中看到了有ifidn
之类的写法,代码如下。第一遇到,便查阅资料记录一下用法。
%ifidn __OUTPUT_FORMAT__, elf32
[bits 32]
%else
default rel
[bits 64]
ifidn
或IFIDN
(大小写都可以),是两条伪指令,用于对两个宏定义的参数进行比较,最初误以为用法类似条件编译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 伪指令在两个符号(包括宏参数名)之间进行不区分大小写的比较,如果它们相等,则返回真。