关于C51中__nop__()函数的一点疑惑
背景:
__nop__函数对应汇编语言中的nop指令,在intrins.h中找到了__nop__()函数的原型如下:
extern void _nop_ (void);
从C语言的角度这是一个外部函数,这样一来调用__nop__函数的时候应该生成一条LCALL指令。但事实上却不是这样,看了编译生成的lst文件,__nop__()调用仅仅被编译成了一条nop指令,也就是说编译器并没有把__nop__当成一个函数来处理。
疑惑:
从__nop__函数的原型声明来看,其就是一个外部函数,并没有特殊的关键字或编译选择指明这是一个“特殊”的“函数”,那编译器是如何知道这不是一个普通的函数而不生成LCALL指令呢?换句话说,如果我自己写定义一个这样“特殊”的“函数”应该怎么做呢?