定义一个C宏,实现插入0~255个NOP指令。
几天后公布答案。
比如:_nopx(3);// 插入3个NOP
//宏定义方法:
#define__NOP1__ nop();
#define __NOP2__ __NOP1__ __NOP1__
#define __NOP4__ __NOP2__ __NOP2__
#define __NOP8__ __NOP4__ __NOP4__
#define __NOP16__ __NOP8__ __NOP8__
#define __NOP32__ __NOP16__ __NOP16__
#define __NOP64__ __NOP32__ __NOP32__
#define __NOP128__ __NOP64__ __NOP64__
#define__NOPX__(a)
if((a)&(0x01)){__NOP1__}
if((a)&(0x02)){__NOP2__}
if((a)&(0x04)){__NOP4__}
if((a)&(0x08)){__NOP8__}
if((a)&(0x10)){__NOP16__}
if((a)&(0x20)){__NOP32__}
if((a)&(0x40)){__NOP64__}
if((a)&(0x80)){__NOP128__}
//宏引用方法(举例):
__NOPX__(13)
//编译结果:
138:__NOPX__(13)
051D0000NOP
051E0000NOP
051F0000NOP
05200000NOP
05210000NOP
05220000NOP
05230000NOP
05240000NOP
05250000NOP
05260000NOP
05270000NOP
05280000NOP
05290000NOP