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

Fab*_*llo 4 c c++ compiler-construction assembly cpu-registers

我记得一段时间以前的一些规则(32位以前的英特尔处理器),当时很频繁(至少对我而言)必须分析C/C++编译器生成的汇编输出(在我看来,当时是Borland/Turbo)找到性能瓶颈,并安全地将汇编例程与C/C++代码混合.比如将SI寄存器用于this指针,AX用于返回值,当汇编例程返回时应保留哪些寄存器等.

现在我想知道是否有更多流行的C/C++编译器(Visual C++,GCC,Intel ......)和处理器(Intel,ARM,...)的参考,如果没有,在哪里找到要创建的部分一.想法?

Dou*_*rie 11

您询问的是"应用程序二进制接口"(ABI)和调用约定.这些通常由操作系统和库设置,并由编译器和链接器强制执行.Google为"ABI"或"召集会议".一些起点来自维基百科Debian for ARM.