为什么linux汇编格式 和 windows 格式不一样,不明白是硬件决定还是编译器决定,抑或是其他因素?谢谢
------解决思路----------------------
不同指令集可能有两个解释,一个是完全的不同,互不兼容,比如 arm 和 intel/amd 体系的(在 pc 上,intel 和 amd 属同一 x86 体系的,尽管在同一阶段指令集上或有差异);另外,也可能把如在 8086 上新增了些指令如现在的 intel core 2 什么的,这个后来的往往是兼容以前的指令的,若需要使用新增的指令,一个是编译程序要支持,其次就是 cpu 要支持了(若不支持,一般是无效指令异常吧)。
------解决思路----------------------
你所指的可能是汇编指令格式吧。常见的有intel格式,nasm格式,masm格式,可能还有别的吧。但是只要是同样的cpu,这些指令生成的机器指令是相同的。
对于不同的cpu,机器指令是不同的,可能某些指令会是相同的二进制表示,但是x86上的机器指令序列拿到arm或者其他构架的cpu上是无法运行的。
同样的高级语言写的程序可以编译为不同平台的二进制程序,只要相关平台提供了对应的编译器,比如说C,很多种构架的cpu都实现了C编译器,但是同样的helloworld程序在不同的平台上生成不同的机器指令(最终)。
所谓linux汇编和win汇编,一则是编译器的差别,一则是系统调用的不同。如果使用跨平台的编译器,那么基本指令是相同的,比如说nasm。