跳至主要內容
汇编语言一发入魂 0x0C - 解放生产力

在上一篇文章中,老李已经教大家将控制权从汇编语言转移到C 语言,但是我们的活动范围依然受限于512字节的引导扇区。今天老李就带领大家突破这512字节的限制,真正的解放生产力

前置知识

如果你一路跟着老李走过来,那么这些前置知识你应该已经掌握了。忘记也没关系,回过头再去看看就 ok 了。


未央大约 9 分钟汇编语言C 语言32位保护模式C 语言内联汇编
汇编语言一发入魂 0x0B - 拥抱 C 语言

汇编语言的基础已经讲了很多,也带领大家进入了保护模式。想必大家在学习进入保护模式这一章时就发现我们已经涉及了很多数据结构全局描述符表段描述符GDTR等。如果可以使用C 语言,将他们和struct对应起来那将会减少很多的工作量。今天老李就教大家如何从汇编语言过渡到C 语言


未央大约 7 分钟汇编语言C 语言32位保护模式C 语言
C 语言内联汇编

在任何一个搜索引擎中输入关键字C语言内联汇编都能搜索到八百个结果,但是纸上得来终觉浅。别人的文章写的再好也比不上自己敲一遍在总结出来。老李在这里做一个粗浅的总结,觉得不够深入的朋友还是去看看那八百篇文章。

为什么要学习 C 语言内联汇编?想必当你在搜索引擎中敲下这几个字的时候就已经有了答案,话不多说,看代码。

int main(void)
{
  return 0;
}

未央大约 7 分钟C 语言汇编语言内联汇编
使用 C 语言编写运行于16位实模式下的代码

通常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)

未央大约 8 分钟16位x86实模式C 语言