我不了解.code16
或其他.code*
指令的实际用法。我从this question on StackOverflow中的答案中了解的内容,>
当有人在其汇编代码中定义.code16
并执行以下操作时:
$ gcc -c -m32 -o main.o main.s
它将忽略
.code16
,并且输出程序集将在32位平台上运行。如果某人未指定-m
标志,则根据主机,似乎将为gcc配置的标志作为默认值。因此,总而言之,.code*
指令始终被忽略,并由-m
标志取代。
[如果我的理解有误,有人可以纠正我吗?使用.code16
时会发生什么情况,因为我总是可以定义使用-m16
和.code*
总是会被忽略,具体取决于目标模式。
.code16
(或其他)仅用于在数据无法放入16位寄存器中时抛出错误,否则,它们将保持休眠状态吗?
我不了解.code16或其他.code *指令的实际用法。当有人在其程序集中定义.code16时,我从关于StackOverflow的问题的答案中了解到...
您曾经使用.code16
,.code32
或.code64
的唯一原因是在内核或引导加载程序中当您想在同一文件中使用不同模式的机器代码时