hyengine 编译问题之结果入栈如何解决

简介: hyengine 编译问题之结果入栈如何解决

问题一:如果函数地址的高16位不为0,MOV_FUNCTION_ADDRESS_TO_REG宏是如何处理的?


如果函数地址的高16位不为0,MOV_FUNCTION_ADDRESS_TO_REG宏是如何处理的?


参考回答:

如果函数地址的高16位不为0,MOV_FUNCTION_ADDRESS_TO_REG宏会通过MOVK_X_I_S_I(NEXT_INSTRUCTION, reg, IMM16(func##Address >> 16), LSL, 16);这行代码,使用MOVK_X_I_S_I指令将函数地址的16-31位(即高16位)移动到寄存器reg中,并左移16位与之前的值合并。


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



问题二:MOV_FUNCTION_ADDRESS_TO_REG宏是如何处理64位函数地址的?


MOV_FUNCTION_ADDRESS_TO_REG宏是如何处理64位函数地址的?


参考回答:

MOV_FUNCTION_ADDRESS_TO_REG宏通过一系列的条件判断和指令执行,逐步将64位函数地址的各个16位段(从低到高)移动到指定的寄存器中。首先处理低16位,然后是高16位、32-47位(如果非零)和48-63位(如果非零),以确保64位地址的完整性和准确性。


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



问题三:如何将CTX_REG中的ctx地址放入R0寄存器作为第一个参数?


如何将CTX_REG中的ctx地址放入R0寄存器作为第一个参数?


参考回答:

要将CTX_REG中的ctx地址放入R0寄存器作为第一个参数,可以使用MOV_X_I(NEXT_INSTRUCTION, R0, CTX_REG);这样的指令,但考虑到CTX_REG可能存储的是一个地址,并且这个地址需要被加载到R0中,如果CTX_REG本身就是R0的别名,则无需移动;否则,可能需要一个加载指令如LDR_X_X_I(NEXT_INSTRUCTION, R0, CTX_REG, 0);(假设CTX_REG是一个指针寄存器,指向ctx的起始地址,且不需要偏移)。


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



问题四:在调用JS_NewObject后,如何将结果存入js栈的SP_OFFSET(0)位置?


在调用JS_NewObject后,如何将结果存入js栈的SP_OFFSET(0)位置?


参考回答:

在调用JS_NewObject后,其结果通常会被放置在R0寄存器中(假设这是函数的返回值寄存器)。要将这个结果存入js栈的SP_OFFSET(0)位置,可以使用STR_X_X_I(NEXT_INSTRUCTION, R0, SP, SP_OFFSET(0));这样的指令,其中SP是栈指针寄存器,SP_OFFSET(0)是栈顶偏移量。


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



问题五:EXCEPTION宏的作用是什么?


EXCEPTION宏的作用是什么?


参考回答:

EXCEPTION宏的作用是从CTX_REG指定的上下文中获取一个内置函数(可能是异常处理函数)的地址,将其加载到tmp寄存器中,然后将js栈上SP_OFFSET(0)位置的值(可能是JS_NewObject的返回值或其他重要值)移动到R0寄存器作为参数,最后通过BLR_X指令跳转到tmp寄存器指向的函数地址执行异常处理或其他内置操作。


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

相关文章
|
监控 小程序 JavaScript
讯飞-微信小程序-语音助手
讯飞-微信小程序-语音助手
391 1
讯飞-微信小程序-语音助手
|
编解码 自然语言处理 PyTorch
论文阅读笔记 | 分类网络——ConvMixer
论文阅读笔记 | 分类网络——ConvMixer
609 0
论文阅读笔记 | 分类网络——ConvMixer
|
编解码 分布式计算 Linux
最新阿里云服务器、轻量应用服务器、GPU云服务器活动价格参考
阿里云服务器产品包含云服务器、轻量应用服务器、GPU云服务器等,本文汇总了这些云服务器当下最新的实时活动价格情况,包含经济型e实例云服务器价格、通用算力型u1实例云服务器价格、第七代云服务器价格、轻量应用服务器最新价格、GPU云服务器价格,以供大家参考。
最新阿里云服务器、轻量应用服务器、GPU云服务器活动价格参考
|
存储 设计模式 Java
Spring Boot中的事件溯源模式
Spring Boot中的事件溯源模式
|
机器学习/深度学习 移动开发 算法
Python垃圾识别系统,TensorFlow+Django网页框架+深度学习模型+卷积网络【完整代码】
垃圾识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对5种垃圾数据集进行训练,最后得到一个识别精度较高的模型。并基于Django,开发网页端操作平台,实现用户上传一张垃圾图片识别其名称。
361 0
|
算法 调度
【调度算法】NSGA II
【调度算法】NSGA II
1162 1
|
安全 Java 数据安全/隐私保护
快速掌握 WinRAR:详细安装与使用指南
**WinRAR 摘要** WinRAR 是全能压缩工具,支持多格式,如 RAR, ZIP 等。要下载,访问 <https://www.win-rar.com> 选择适合的操作系统和语言。安装时,定制路径和选项,如桌面快捷方式。启动后,通过“选项”->“设置”配置首选项。使用上,能新建压缩文件,设定格式和选项,也可解压文件到指定目录。遇到问题,如文件损坏,可利用 WinRAR 的修复功能。本文提供下载、安装和使用指导,确保用户顺利操作。
|
机器学习/深度学习 数据采集 大数据
大数据技术下的企业智能决策支持系统
大数据技术下的企业智能决策支持系统
563 0
|
数据采集 存储 监控
大数据治理:确保数据质量和合规性
【5月更文挑战第30天】大数据治理涉及数据分类、访问控制和质量监控,以确保数据安全和合规性。企业需保护个人隐私,防止数据泄露,并遵守各地法规,如GDPR和CCPA。技术实践包括数据加密、匿名化和严格访问控制。管理策略则强调制定政策、员工培训和法律合作。全面的数据治理能保障数据质量,驱动组织的创新和价值增长。
610 0
|
算法 定位技术 C语言
推箱子游戏(算法设计)
推箱子游戏(算法设计)
376 0