为什么返回MEMORY类型时以%rax返回对象地址?

问题描述 投票:3回答:1

根据AMD64调用约定,返回存储在内存中的对象时,步骤如下:

  1. 调用者为返回的对象分配内存,并在%rdi中将地址作为隐藏参数传递。
  2. 被呼叫者填写对象。
  3. 被调用者返回%rax中对象的地址。

我想知道为什么将第三项要求添加到标准中?内存已由调用方分配,因此不需要提醒调用方分配的位置。在%rax中返回内存地址有什么意义?

linux assembly x86-64 calling-convention
1个回答
-2
投票

RDI是字符串操作的目标索引,它的值可能会在被调用方处理中被覆盖。通过累加器RAX返回地址是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.