在上一篇文章中,老李已经教大家将控制权从汇编语言
转移到C 语言
,但是我们的活动范围依然受限于512
字节的引导扇区。今天老李就带领大家突破这512
字节的限制,真正的解放生产力。
前置知识
如果你一路跟着老李走过来,那么这些前置知识你应该已经掌握了。忘记也没关系,回过头再去看看就 ok 了。
大约 9 分钟
在上一篇文章中,老李已经教大家将控制权从汇编语言
转移到C 语言
,但是我们的活动范围依然受限于512
字节的引导扇区。今天老李就带领大家突破这512
字节的限制,真正的解放生产力。
如果你一路跟着老李走过来,那么这些前置知识你应该已经掌握了。忘记也没关系,回过头再去看看就 ok 了。
汇编语言的基础已经讲了很多,也带领大家进入了保护模式。想必大家在学习进入保护模式这一章时就发现我们已经涉及了很多数据结构
,全局描述符表
、段描述符
、GDTR
等。如果可以使用C 语言
,将他们和struct
对应起来那将会减少很多的工作量。今天老李就教大家如何从汇编语言
过渡到C 语言
。
在任何一个搜索引擎中输入关键字C语言内联汇编
都能搜索到八百个结果,但是纸上得来终觉浅
。别人的文章写的再好也比不上自己敲一遍在总结出来。老李在这里做一个粗浅的总结,觉得不够深入的朋友还是去看看那八百篇文章。
为什么要学习 C 语言内联汇编?想必当你在搜索引擎中敲下这几个字的时候就已经有了答案,话不多说,看代码。
int main(void)
{
return 0;
}
通常16
位实模式下的代码都是用汇编语言写的,但是为什么要用c
语言写呢?因为爽啊!今天老李就教大家怎么用c
语言写出来可以运行在实模式下的代码。话不多说,开干!
Ubuntu 18.04.4 LTS
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
GNU as (GNU Binutils for Ubuntu) 2.30
GNU ld (GNU Binutils for Ubuntu) 2.30
QEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.21)