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

相关文章
Servlet生命周期
Servlet生命周期
93 1
|
关系型数据库 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文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出。
23716 0
|
安全 Java 编译器
Qt之Q_OBJECT 宏的神奇之旅(一)
Qt之Q_OBJECT 宏的神奇之旅
915 0
|
Java 应用服务中间件 网络安全
SpringBoot入门(十二)
SpringBoot入门(十二)
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的停车管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的停车管理系统附带文章和源代码部署视频讲解等
87 1
|
机器学习/深度学习 缓存 固态存储
11.Python 正则表达式
11.Python 正则表达式
130 0
|
缓存 算法 安全
|
数据可视化 图形学 数据格式
R可视乎|马赛克图
马赛克图(mosaic plot),显示分类数据中一对变量之间的关系,原理类似双向的100%堆叠式条形图,但其中所有条形在数值/标尺轴上具有相等长度,并会被划分成段。可以通过这两个变量来检测类别与其子类别之间的关系。
759 0
R可视乎|马赛克图
|
前端开发
【TP5项目统一规范】修改数据
【TP5项目统一规范】修改数据
201 0
【TP5项目统一规范】修改数据
|
前端开发 开发者
背景样式属性 | 学习笔记
快速学习背景样式属性。
184 0