为什么解释型的脚本语言(如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日

相关推荐

  • 如何做好项目汛期管理工作

    项目汛期管理工作是确保施工安全、提高项目施工效率的关键。要做好项目汛期管理工作,关键措施包括:制定详细的汛期应急预案、加强现场监管和管理、严格施工人员安全教育、保证施工材料与设备的安全存放、实时监测天气变化、科学调配施工进度等。其中,制定详细的汛期应急预案尤为重要,因为它为应对突发的洪水灾害提供了具…

    2024年4月11日
    4900
  • 智慧养老APP开发定制开发需要具备哪些功能

    智慧养老APP开发定制开发需要具备的功能有:1、人员管理;2、房间管理;3、实时监测;4、级别管理;5、紧急救护。人员管理是指,录入老人的基本信息及紧急联系人,还有老人的健康档案,照顾的注意事项。 一、人员管理 录入老人的基本信息及紧急联系人,还有老人的健康档案,照顾的注意事项。 二、房间管理 养老…

    2023年5月10日
    37700
  • 瑞云创始人汪忠田:售后服务SaaS市场拓荒者

    文| babayage 编辑 | 笑 笑 23年企业服务马拉松 创造客户价值推动人生决策 汪忠田在企业服务赛道已经长跑了23年,“从客户角度思考问题”“以解决客户问题为目标决策行为”这些大道理,早已成为他的一日三餐、人生日常。 1997年,明基(BenQ)正式在中国市场开疆拓土,同年5月,武汉大学计…

    2022年3月20日
    1.1K00
  • DevOps中的模块化开发原则

    模块化开发在DevOps实践中是提升软件开发质量和效率的关键策略。这一观点建立在几个核心理由之上:1、降低复杂性;2、提高可重用性;3、简化版本控制和持续集成;4、促进团队协作;5、加速问题定位与修复。其中,降低复杂性由于可以使得每个模块相对独立,减少了各部分之间的依赖和耦合,便于理解和维护整体系统…

    2024年1月4日
    28100
  • 目前主流的PLC编程用什么软件

    目前主流的PLC编程用的软件有以下几个:1、西门子TIA Portal;2、西门子step7;3、三菱GX works。其中,西门子TIA Portal是西门子工业自动化集团发布的一款全新的全集成自动化软件。 1、西门子TIA Portal 是西门子工业自动化集团发布的一款全新的全集成自动化软件。它…

    2023年2月7日
    5.2K00
  • DevOps对企业竞争力的影响

    在当今快速变化的市场中,DevOps已经成为加强企业竞争力的重要工具。这种企业文化和技术实践的结合显著提高了软件开发和交付的速度和效率,给企业带来了四个核心优势:1、加快产品上市时间;2、提升产品质量与稳定性;3、增强团队协作与沟通;4、提高运维效率与成本控制。将这些核心优势运用到企业运营模式中,不…

    2023年12月13日
    26500
  • 如何加强铁路项目合同管理

    铁路项目合同管理的加强可通过明确合同范围、制定详实的合同条款、建立风险分担机制、进行定期的合同审核以及优化合同执行流程等措施实现。建立风险分担机制尤其关键,它要求合同双方在签订前详细分析潜在的风险,通过制定合理的风险责任分配条款来最大限度地降低项目过程中的不确定性,同时确保在发生风险时,双方能够根据…

    2024年4月10日
    6700
  • esp32 esp8266区别

    ESP8266和ESP32都是Espressif Systems公司生产的流行的低成本Wi-Fi芯片,可广泛应用于物联网项目。这两款芯片都能实现无线通信,但存在一些关键区别。ESP32具有更高的处理能力,支持蓝牙和Wi-Fi,而且有更多的GPIO(通用输入/输出)引脚。本文将进一步深入探讨以下几个主…

    2023年8月4日
    1.7K00
  • oa办公系统价

    标题:OA办公系统价值分析 OA办公系统价值在于提高工作效率、降低运营成本与促进信息共享三个方面。在具体应用中, 软件的设计致力于替代传统的纸质文档流转,借由数字化的信息管理,加速决策过程与数据检索。工作效率的提升显而易见,通过实时的通讯与协作工具,员工能够快速响应工作需求,推进项目进度。降低运营成…

    2024年1月12日
    22200
  • DevOps项目中的测试自动化实现方法

    测试自动化是DevOps项目的基石,它使得项目能够更快交付,同时保持高质量。实现方法包括:1、选用合适的工具与框架、2、建立持续集成/持续部署(CI/CD)流程、3、使用行为驱动开发(BDD)接近、4、构建测试环境管理及模拟、5、实施监控与日志分析、6、定期评审与持续改进。针对第3点,行为驱动开发是…

    2024年1月2日
    25900

发表回复

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

400-800-1024

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

分享本页
返回顶部