GCC5.2.0(以及可能的较早版本)用
-m16
标志支持16位代码生成。但是,该代码几乎可以肯定会依靠32位处理器功能(例如32位宽寄存器),因此您应该仔细检查生成的组件。
从页面上:-M16选项与-m32相同,除了输出 “ .code16gcc”汇编指令在组装输出的开头 这样二进制可以以16位模式运行。
首先,GCC可以构建16位代码,因为Linux内核可以通过Realmode进行protectMode,因此它甚至可以构建16位C代码。
然后,-M16选项由GCC> = 4.9支持,clang> =3.5GCC将忽略ASM(“。代码16”),您可以通过-s输出#App#no_app
-makefile包围的汇编代码来看到它 Linux内核可以用Code16GCC.H(仅具有.code16gcc)将16位C的措施传递到GCC直接编译参数。 请参阅
-build 16位代码,并在可能的情况下使用-m16,也请参见Linux内核build