gpt4 book ai didi

c - DOS disable() 类似函数的宏

转载 作者:行者123 更新时间:2023-11-30 15:03:09 25 4
gpt4 key购买 nike

在 dos.h 文件中,我遇到了以下宏:

    #define disable()       __emit__((unsigned char)(0xfa))

在一些研究中,我了解到 emit 函数是“将文字值直接注入(inject)目标代码的伪函数”。但无法理解其含义 发出(0xfa)

最佳答案

它注入(inject)你的代码文字机器代码。根据评论 int 主要问题,这类似于:(我在这里使用 TP7 pascal 代码,因为我很复古):

BEGIN
WriteLn('Hello world, now interrupts are disabled');
ASM
CLI ; // clear interrupts - to re-enable call STI
END
END.

另请参阅 - https://stackoverflow.com/a/1581729/78712

另一个例子(这次是 C 语言,借用 http://borlpasc.narod.ru/english/faqs/written.htm )可能是

// jump FFFF:0000
#define reboot __emit__ 0xEA __emit__ 0x00 __emit__ 0x00 __emit__ 0xFF __emit__ 0xFF

这似乎是特定于 Mircrosoft 编译器的,因为我不确定它是否在 GCC 上可用。请注意,这仅适用于 16 位 DOS,而在 win32 下,这将以一种有趣的方式失败。 Linux/ARM/AMD64 和其他变体也是不可能的。

另请参阅 In C programming, what does "emit" do?

关于c - DOS disable() 类似函数的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40826462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com