![]() |
1
5
大多数x86指令集对所有处理器都是通用的——这是一个相当安全的赌注,即您的处理器都有相同的指令集,除了在实现简单编译器时可能对您不太有用的SIMD指令(这些指令通常是使用的使多媒体应用程序等运行得更快)。指令集列在 Intel's manuals --2a和2b尤其有一个完整的指令清单和它们的行为,尽管其他的卷值得一看。 在生成用户空间代码时,操作系统的选择对于系统调用很重要。例如,如果希望程序在64位Linux上向终端输出某些内容,则需要通过以下方式进行系统调用:
返回值来自
不同的操作系统可能具有不同的系统调用号
Linux上普通函数调用的约定类似——寄存器的顺序是
|
![]() |
2
3
一般来说,这些问题没有正确的答案。您可以使用任何您想要的调用约定……除非您想与其他人的代码进行互操作。为了实现互操作性,编译器对应用程序二进制接口进行标准化。我的理解是 Itanium C++ ABI 近年来已成为一种流行的标准。试着从那里开始。 |
![]() |
3
1
我不能回答你们所有的问题;但是
|