hyengine 寄存器问题之提升代码性能如何解决

简介: hyengine 寄存器问题之提升代码性能如何解决

问题一:在给出的假设代码中,哪些内存偏移被分配到了寄存器,并且是如何分配的?


在给出的假设代码中,哪些内存偏移被分配到了寄存器,并且是如何分配的?


参考回答:

在给出的假设代码中,内存偏移#0x8和#0x10被分配到了寄存器。具体来说,偏移#0x8被分配到了寄存器x20,而偏移#0x10被分配到了寄存器x21。分配后的代码示例如下:

0x107384024: mov x20, x9 ; 偏移8变成x20 
 ... 
 0x10738402c: mov x21, x9 ; 偏移16变成x21 
 ... 
 0x107384034: mov x10, x20 ; 偏移8再次通过x20访问 
 0x107384038: mov x11, x21 ; 偏移16再次通过x21访问


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666140



问题二:寄存器分配后,原始代码中的哪些ldr和str指令被替换了?


寄存器分配后,原始代码中的哪些ldr和str指令被替换了?


参考回答:

在寄存器分配后,原始代码中对偏移#0x8和#0x10的ldr和str指令被替换为了对寄存器x20和x21的mov指令。具体来说,原本对[x19, #0x8]和[x19, #0x10]的访问被替换为了对x20和x21的访问,从而减少了内存访问次数。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666142



问题三:在寄存器分配后,代码的性能如何得到提升?


在寄存器分配后,代码的性能如何得到提升?


参考回答:

在寄存器分配后,代码的性能得到提升,因为原本需要多次访问内存(通过ldr/str指令)的数据现在被存储在寄存器中,寄存器访问速度远快于内存访问,从而减少了执行时间,提升了整体性能。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666143



问题四:为什么方法调用时把寄存器的值拷回栈会增加内存访问的开销?


为什么方法调用时把寄存器的值拷回栈会增加内存访问的开销?


参考回答:

在方法调用时,如果需要将寄存器的值拷回栈(如原始汇编代码所示),这会导致额外的内存访问开销,因为寄存器访问通常比内存访问快得多。这种拷回栈的操作增加了不必要的性能负担。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666144



问题五:arm64的调用约定中参数是如何传递的?


arm64的调用约定中参数是如何传递的?


参考回答:

在arm64的调用约定中,参数传递是通过寄存器来完成的。这意味着在方法调用时,可以直接将参数放入指定的寄存器中,而无需先将它们存储在内存中,从而减少了内存访问的次数,提高了性能。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666145

相关文章
|
人工智能 搜索推荐 机器人
7 个使用生成式 AI 构建的项目
这是七个生成式 AI 项目,可以帮助您提升简历并提高工作效率
1042 0
|
关系型数据库 MySQL 数据安全/隐私保护
查看mysql 默认端口号和修改端口号
1. 登录mysql mysql -u root -p //输入密码    2. 使用命令show global variables like 'port';查看端口号 mysql> show global variables like 'port';    3. 修改端口,编辑/etc/my.cnf文件,早期版本有可能是my.conf文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出。
23648 0
|
数据采集 中间件 Shell
scrapy常用命令总结
scrapy常用命令总结
|
Java 应用服务中间件 网络安全
SpringBoot入门(十二)
SpringBoot入门(十二)
|
存储 Cloud Native 数据可视化
首个!Ganos联合PolarDB通过信通院「首批」时空数据库产品评测
2023年6月16日,中国信通院组织时空数据库评测专家评审会,PolarDB + Ganos顺利通过评测答辩,成为全网唯一一个全量通过五大能力域中全部的五十九个能力项测试的数据库产品。
|
机器学习/深度学习 缓存 固态存储
11.Python 正则表达式
11.Python 正则表达式
128 0
|
安全 Java 编译器
Qt之Q_OBJECT 宏的神奇之旅(一)
Qt之Q_OBJECT 宏的神奇之旅
895 0
|
缓存 算法 安全
|
数据可视化 图形学 数据格式
R可视乎|马赛克图
马赛克图(mosaic plot),显示分类数据中一对变量之间的关系,原理类似双向的100%堆叠式条形图,但其中所有条形在数值/标尺轴上具有相等长度,并会被划分成段。可以通过这两个变量来检测类别与其子类别之间的关系。
746 0
R可视乎|马赛克图
|
前端开发
【TP5项目统一规范】修改数据
【TP5项目统一规范】修改数据
199 0
【TP5项目统一规范】修改数据