0x0f,0x0b是什么指令?
v2.4.0
#define BUG() do {
printk("kernel BUG at %s:%d!n", __FILE__, __LINE__);
__asm__ __volatile__(".byte 0x0f,0x0b");
} while (0)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是ud2a指令,也就是INTEL的无效指令。目的是通过指令的执行触发FAULT HANDLER来处理显示BUG。
因为BUG是程序主动发现的,FAULT HANDLER否则不会自动触发。
怀疑是非法指令,写了一个模块
#include <linux/module.h>
int init_module(void)
{
asm(".byte 0x0f,0x0b");
return -1;
}
编译加载后显示如下信息
invalid operand: 0000
CPU: 0
EIP: 0010:[<c4928063>]
EFLAGS: 00000286
eax: c4928060 ebx: c4928000 ecx: c0240f60 edx: c0240da8
esi: 00000000 edi: 00000000 ebp: c17c3f28 esp: c17c3f28
ds: 0018 es: 0018 ss: 0018
Process insmod.old (pid: 1966, stackpage=c17c3000)
Stack: 00000060 c01182e5 00000000 c17ac000 00000074 c17e3000 00000060 ffffffea
00000001 c1fac9c0 00000060 c4934000 c4928060 000000d0 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Call Trace: [<c01182e5>] [<c4934000>] [<c4928060>] [<c0106f0b>]
Code: 0f 0b b8 ff ff ff ff 5d c3 55 89 e5 5d c3 8d 76 00 74 00 5f
Segmentation fault
果然是.
是伪指令.byte的操作数吧.