【发布时间】:2011-06-04 01:40:47
【问题描述】:
我对所有这些低级的东西,汇编语言都比较陌生。并且想了解更多细节。为什么 Linux、Windows 汇编语言之间存在差异?
据我了解,当我编译 C 代码时,操作系统并不会真正产生纯机器或汇编代码,它会产生依赖于操作系统的二进制代码。但为什么呢?
例如,当我使用 x86 系统时,CPU 只理解 x86 ASM 对吗?那么为什么我们不编写纯 x86 汇编代码,为什么根据操作系统会有不同的汇编变体?如果我们编写纯 ASM 或 OS 产生纯 ASM,那么操作系统之间是否不会出现二进制兼容性问题?
我真的很想知道它们背后的所有原因。任何详细的答案、文章、书籍都会很棒。谢谢。
【问题讨论】:
-
唯一的区别是:您使用的方法取决于操作系统。例如:C 方法 printf() 会在操作系统上做一些不同的事情,因为每个操作系统都以其他方式处理它。
标签: assembly operating-system x86