gpt4 book ai didi

ARMv8 AArch64 SVC 保存寄存器

转载 作者:行者123 更新时间:2023-12-05 00:24:17 32 4
gpt4 key购买 nike

假设我有一个简单的 aarch64 函数,它通过 SVC 进行系统调用,看起来像这样(iOS 目标):

make_syscall:
stp fp, lr, [sp, #-16]!
add fp, sp, #0
mov x16, SYSCALL_NUM
svc #128
ldp fp, lr, [sp], #16
ret

问题:由于函数只修改x16,调用者保存,是否需要保存/恢复除了帧指针和链接寄存器之外的其他寄存器?换句话说,是否可以假定 SVC 处理程序遵守 ABI 过程调用约定?

谢谢

最佳答案

我想我找到了问题的答案: https://events.linuxfoundation.org/images/stories/pdf/lcna_co2012_marinas.pdf在第14-15页,它谈到了当用户模式转移到更高模式时arm 64bit做了什么。简单地说,内核自动将 GPR 保存到内核堆栈中,但不像用户代码那样显式保存。

关于ARMv8 AArch64 SVC 保存寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26792012/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com