为什么解释型的脚本语言(如Lua、Python)可以热更新,而编译型的语言(如C、C++)不能呢

因为lua在不开启JIT的情况下是解释运行,也就是通过软件cpu来执行这些代码,而模拟器代码在提交的时候已经通过了appstore之类的审核是可以被cpu执行的,你热更的lua脚本只是一种数据,被模拟器加载了而已,因此不会被No eXecute bit技术所限制。

手游行业使用Lua热更是因为ios系统的限制,如果仅仅考虑Android系统,通常使用Unity进行游戏开发,对待代码方面的更新,完全可以使用动态链接库,不用Lua也是可以的。但是一旦考虑到ios系统就不行了。

首先c#这种语言编写的程序在运行前,会先编译成中间语言,运行时clr会根据硬件特性,将中间语言解释为机器码,然后申请一块可读写可执行的内存,之前翻译的结果复制过去,指令指针指过去就能运行,这里ios限制了申请的内存权限不可执行所以gg。

热更的原理很简单,将需要替换或者新增的二进制代码和资源加载到内存,然后运行他,这种事情在windows上有很多方便的方式(例如dll)实现,而在Android虽然没有直接提供简单的方式仍然可以将动态链接库(so)当作数据读入到内存,然后执行之。

但是,作为没有越狱的ios系统,苹果因为安全或者其他原因,启动了CPU的No eXecute bit,大致就是将appstore审核过的代码加入签名文件,然后ios运行app的时候会为appstore审核过的代码开辟专用的内存空间,而其他app中的数据或者通过代码从线上下载的数据加载的时候会将存放的内存空间定义描述符定义为禁止运行,这样ip寄存器将不能够跳转到该空间,因此这部分代码不能运行。这种安全技术应该在某些系统(比如安全要求很高的银行计算机,猜测)也是使用的的,不过一般我们接触到的电子产品也就只有ios使用了这种技术(不知道游戏主机有没有使用,木有玩过主机)

而为什么lua等脚本语言可以热更,因为lua在不开启JIT的情况下是解释运行,也就是通过软件cpu来执行这些代码,而模拟器代码在提交的时候已经通过了appstore之类的审核是可以被cpu执行的,你热更的lua脚本只是一种数据,被模拟器加载了而已,因此不会被No eXecute bit技术所限制。

延伸阅读:

什么是脚本语言?

文章标题:为什么解释型的脚本语言(如Lua、Python)可以热更新,而编译型的语言(如C、C++)不能呢,发布者:小编,转载请注明出处:https://worktile.com/kb/p/39233

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月22日
下一篇 2023年2月22日

相关推荐

  • 研发效能度量指标影响因子有哪些

    研发效能度量指标影响因子有:一、发布频率;二、需求响应周期:包含交付周期时间和开发周期时间;三、交付吞吐率;四、交付过程质量;五、对外交付质量;六、资源利用率。发布频率衡量的是持续发布能力。 一、发布频率 发布频率衡量的是持续发布能力。研发团队对外响应的速度不会大于其交付频率,发布频率约束团队对外响…

    2023年4月30日
    52100
  • 为什么要推行devops

    随着信息科技的演进,软件交付速率的加快成为企业竞争优势的重要因素。DevOps,作为一种文化和技术的结合,因其能显著提升交付效率、增强团队协作、提升软件质量而被推崇。具体而言:1、缩短产品上市周期,因为DevOps通过自动化流程加快了开发与部署的速度;2、增强团队间沟通与合作,因为它强调了开发、测试…

    2024年3月26日
    6900
  • 什么是精益管理

    精益管理源自于精益生产(lean production),是衍生自丰田生产方式的一种管理哲学。精益管理就是要求企业以最小资源投入,创造出尽可能多的价值,为顾客提供高质量产品和及时的服务,精益管理的目的就是企业在为顾客提供满意的产品与服务的同时,把浪费降到最低程度。 精益管理源自于精益生产(lean …

    2023年1月17日
    3.5K00
  • 需求规划平台有哪些

    需求规划平台有:1. JIRA;2. Aha!;3. ProductPlan;4. Targetprocess;5. VersionOne;6. Microsoft Azure DevOps。JIRA是广泛使用的敏捷项目管理和需求跟踪工具,支持敏捷方法论,如Scrum和Kanban,拥有需求的详细追…

    2023年7月10日
    45900
  • 工程项目总经理如何管理

    为了有效地管理工程项目,总经理需要具备一系列的管理技能与策略,这些包括了资源配置、团队建设、计划制定与执行、风险管理、沟通与协调、监测与控制项目进展等。在这些关键技能中,沟通与协调尤为重要,因为它们是确保项目团队之间信息准确交流的基础,也是解决冲突、促进各方合作的关键。 一、资源配置 有效利用资源 …

    2024年4月10日
    5600
  • 如何管理物业公司项目经理

    物业公司项目经理的有效管理依赖于对核心职责的深刻理解、有效的沟通技巧、完善的培训体系和人才发展策略、精确的绩效评估机制,以及严格的质量控制流程。首先,项目经理必须精通物业管理的各个方面,这包括但不限于物业维护、客户服务、预算管理、合同谈判、团队监督等等。其次,项目经理应当能够与不同部门进行有效沟通,…

    2024年4月10日
    5200
  • oa系统有哪些

    oa系统有:1、九思软件oa办公系统软件;2、泛微OA办公系统软件;3、通达OA办公系统软件;4、钉钉OA办公系统软件;5、蜘蛛表格OA办公系统软件。九思软件,作为“中国OA市场具成长性品牌”,自创办以来,精准定位高端客户,服务集团化企业和政府机关。 一、九思软件oa办公系统软件 九思软件,作为“中…

    2023年4月19日
    1.6K00
  • 项目管理需要注意什么

    开展项目管理工作,关键要素包括严格的目标设定、资源合理配置、风险评估、沟通高效、持续监控与调整。项目目标应明确具体;资源配置需优化;风险管理须前瞻性;沟通要畅通;监控与调整应及时。其中,资源合理配置是保证项目顺利进行的关键,需要在项目开始阶段确立资源需求,并在整个项目周期内优化与调配资源。 一、项目…

    2024年1月8日
    20800
  • 建造师如何提升项目质量管理

    项目质量管理的提升关键在于系统化流程、团队沟通、专业技能、持续改进、技术应用、风险控制。建造师应通过建立完善的质量管理体系、促进有效的团队交流、加强自身及团队的专业技能、实施持续的改进计划、使用先进的建筑技术工具、以及进行严格的风险控制与监管来提升项目的质量管理水平。特别是持续改进,作为一个动态过程…

    2024年4月11日
    4500
  • 研发和项目经理有什么区别

    研发和项目经理的区别有:1、角色定位与职责;2、所需技能与知识背景;3、工作内容与流程;4、团队协作与沟通方式;5、考核标准与成果展现;6、日常挑战与问题解决。其中,角色定位与职责是二者在企业组织结构中的基本定义及其核心任务。 1、角色定位与职责 研发:研发,即研究与开发,负责产品或技术的创新、优化…

    2023年7月30日
    94600

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部