c++ - 在主要 C/C++ 编译器生成的代码中注册分配规则

标签 c++ c assembly compiler-construction cpu-registers

我记得以前(32 位之前的 Intel 处理器)的一些规则,当时非常频繁(至少对我而言)必须分析 C/C++ 编译器生成的汇编输出(在我的例子中,Borland/Turbo 在那个时候)找到性能瓶颈,并安全地将汇编例程与 C/C++ 代码混合。诸如将 SI 寄存器用于 this 指针、AX 用于返回值、汇编例程返回时应保留哪些寄存器等。

现在我想知道是否有一些关于更流行的 C/C++ 编译器(Visual C++、GCC、Intel...)和处理器(Intel、ARM...)的引用,如果没有,在哪里可以找到件来创造一个。想法?

最佳答案

您询问的是“应用程序二进制接口(interface)”(ABI) 和调用约定。这些通常由操作系统和库设置,并由编译器和链接器强制执行。 Google 搜索“ABI”或“调用约定”。一些起点来自 WikipediaDebian for ARM .

关于c++ - 在主要 C/C++ 编译器生成的代码中注册分配规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256220/

相关文章:

交叉引用 typedef 结构

assembly - 复制到 NASM 中的阵列

c++ - 关于类成员指针的一些问题

c++ - boost 错误 : reference to 'detail' is ambiguous

c++ - 在多级继承中派生的虚拟基类会发生什么?

c++ - 宏引用扩展结果

我不能将 4294967295 存储在 unsigned int 中吗? Int 在我的机器上是 4 个字节

assembly - 对 68HC12 上的一个字节进行位反转

C 到 MIPS 汇编

c++ - longjmp 和 RAII