assembly - 返回结果到 eax(IA-32 汇编语言)

标签 assembly intel x86

我对如何从汇编语言中的方法返回值感到有些困惑。据我所知,eax 寄存器用于保存要返回的结果。

例如,假设我的结果是 4,我使用:

mov eax, 4

我现在在 eax 中有 4 个,我想返回这个方法。有什么我需要做的吗?或者会指示ret自动返回结果?

问题是我不知道寄存器 eax 有什么特别之处。从我使用 ret 开始我回到调用者那里,调用者可以自由访问我将结果存储到的任何寄存器,所以为什么我不能只使用 ebxecx而是存储结果?

最佳答案

结果存储在eax的原因是约定;您可以决定将其存储在您喜欢的任何寄存器中。但是,您的函数的调用者可能会假设返回值的内容存储在 eax 中。 .这也意味着您在调用 ret 时不必做任何额外的工作。 .

关于assembly - 返回结果到 eax(IA-32 汇编语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897771/

相关文章:

assembly - 从 FAT 软盘镜像读取第二阶段引导加载程序

c - 在适用于 ARM Cortex M4f 的 Code Composer studio 中将堆栈指针的值保存在 C 变量中

assembly - 如何用汇编语言打印余数

x86 - x86 MSR 名称的 IA32 与 MSR 前缀

汇编中局部和全局范围内的 const 变量

c - 从编译器到汇编器

程序集跳转/分支/查找表而不是大量的 cmp/je?

performance - 在大多数现代 64 位处理器上, `mulq` 的速度是否取决于操作数?

assembly - sbb指令和进位标志的使用

arrays - 在 .data 中对数组进行索引会导致地址远高于数组