performance - 为什么 arm64 ABI 中不使用 SVC 的立即数?
问题描述
swi
在 aarch32 中,更准确地说是 ARM-OABI,仍然使用的立即值来传输系统调用号。另一方面,在 ARM-EABI 中,使用了寄存器。swi #0
然后表示应该使用一个寄存器。
这个选项在 aarch64 中不再可用,所以我一直使用这个组合:
mov x8, syscall_number
svc #0
为什么我必须在此处添加额外的 4 个字节的代码大小,而这次立即值仍然未使用?
根据 ARM 程序员指南,立即值存储在异常综合症寄存器 ESR_EL
中,因此应该可以使用mrs
. 或者这已经是一个太大的性能损失?
参考:
解决方案
推荐阅读
- javascript - ExpressJs 等到 MongoDB 获取数据并在输出之前循环
- powerapps - MS powerapps 构建的底层框架和编程语言是什么?
- javascript - Dynamics365 列表视图:自定义 javascript 位于何处?
- html - 如何制作自适应图像滑块?
- r - 将动作按钮与 selectinput 水平对齐
- git - github:将 master 上的最后一次提交恢复到生产环境
- c++ - qt c++ QPaint 与 QVector
- jquery - Jquery:在焦点输出上更改输入文本值
- blazor - 添加到 ValidationSummary 的消息仅显示在 ValidationSummary 中
- elasticsearch - 如何使用字段和子字段计数制作弹性搜索 API(查询)