首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UD2操作码在Linux内核中的作用是什么?

UD2操作码在Linux内核中的作用是什么?
EN

Stack Overflow用户
提问于 2012-06-21 22:14:54
回答 1查看 10.4K关注 0票数 30

在启动阶段的某个地方,我在Linux内核中发现了以下片段(虽然不是相应的C代码)。您可以清楚地看到0F 0B部分,它们代表UD2操作码(IDA拒绝反汇编)。

此操作码有一些可能的用法,如herehere所述。然而,在这种情况下,该指令后面的操作码并没有真正的意义。

代码语言:javascript
复制
seg000:000C059E                 test    edx, edx
seg000:000C05A0                 jnz     short loc_C05AA
seg000:000C05A0 ; --------------------------------------------------
seg000:000C05A2                 db  0Fh
seg000:000C05A3                 db  0Bh
seg000:000C05A4                 db 73h
seg000:000C05A5                 db 0
seg000:000C05A6                 db  86h ; å
seg000:000C05A7                 db  4Ah ; J
seg000:000C05A8                 db  27h ; '
seg000:000C05A9                 db 0C0h ; +
seg000:000C05AA ; --------------------------------------------------
seg000:000C05AA
seg000:000C05AA loc_C05AA:                              
seg000:000C05AA                 cmp     eax, [edi+4]
seg000:000C05AD                 jbe     short loc_C05B7
seg000:000C05AD ; --------------------------------------------------
seg000:000C05AF                 db  0Fh
seg000:000C05B0                 db  0Bh
seg000:000C05B1                 db 75h
seg000:000C05B2                 db    0
seg000:000C05B3                 db 86h
seg000:000C05B4                 db  4Ah ; J
seg000:000C05B5                 db  27h ; '
seg000:000C05B6                 db 0C0h ; +
seg000:000C05B7 ; --------------------------------------------------
seg000:000C05B7
seg000:000C05B7 loc_C05B7:                              
seg000:000C05B7                 add     ecx, 0FFFh
seg000:000C05BD                 shr     esi, 0Ch
seg000:000C05C0                 shr     ecx, 0Ch
seg000:000C05C3                 sub     ecx, esi
seg000:000C05C5                 cmp     ecx, ebx
seg000:000C05C7                 jnb     short loc_C05E9
seg000:000C05C9                 lea     esi, [esi+0]
seg000:000C05D0
seg000:000C05D0 loc_C05D0:                              
seg000:000C05D0                 mov     edx, [edi+8]
seg000:000C05D3                 btr     [edx], ecx
seg000:000C05D6                 sbb     eax, eax
seg000:000C05D8                 test    eax, eax
seg000:000C05DA                 jnz     short loc_C05E4
seg000:000C05DA ; ------------------------------------------------
seg000:000C05DC                 db  0Fh
seg000:000C05DD                 db  0Bh
seg000:000C05DE                 db 7Fh
seg000:000C05DF                 db 0
seg000:000C05E0                 db  86h ; å
seg000:000C05E1                 db  4Ah ; J
seg000:000C05E2                 db  27h ; '
seg000:000C05E3                 db 0C0h ; +
seg000:000C05E4 ; -------------------------------------------------
seg000:000C05E4
seg000:000C05E4 loc_C05E4:                              
seg000:000C05E4                 inc     ecx
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-21 22:55:07

这是来自include/asm-i386/bug.h的BUG()宏。

代码语言:javascript
复制
/*
 * Tell the user there is some problem.
 * The offending file and line are encoded after the "officially
 * undefined" opcode for parsing in the trap handler.
 */

#ifdef CONFIG_DEBUG_BUGVERBOSE
#define BUG()                           \
 __asm__ __volatile__(  "ud2\n"         \
                        "\t.word %c0\n" \
                        "\t.long %c1\n" \
                         : : "i" (__LINE__), "i" (__FILE__))

例如,位于0C05AF的文件名为0xC0274A86,行号为117 (0x75)。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11140136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档