MAK*_*AKZ 17 c kernel assembly
我的问题是为什么现在一些操作系统事件处理仍然用汇编语言而不是更高级的语言(如 C)编写,而内核本身主要是用 C 编写的?
小智 7
你不能在 C 中做到这一点 :)
lgdt[xxxx]
mov eax, cr0
or al, 0x01
mov cr0, eax
Run Code Online (Sandbox Code Playgroud)
我正在尝试进入 x86 保护模式。显然,我仍然可以通过“发出”原始机器代码在 C 中做到这一点,但仍然万一我需要访问精确的偏移量 - 我主要是运气不好。
第二个例子是 BootLoader。在 x86 系统上,要求传统的引导代码长度恰好为 512 字节,最后两个字节分别为 0xAA 和 0x55(或 55 AA)...以一种奇妙的方式工作。
还有更多这样的情况,其中汇编不仅是可取的,而且是唯一的手段。
归档时间: |
|
查看次数: |
2019 次 |
最近记录: |