为什么解释型的脚本语言(如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年7月24日
    1000
  • bim项目管理平台有哪些内容

    BIM项目管理平台包含的内容主要有:项目管理模块、模型管理模块、协作与沟通模块、任务管理模块、文件管理模块、质量安全模块等。其中,项目管理模块是最核心的部分,它主要负责对项目整体进度的管理,包括项目计划、项目进度、项目成本、项目风险等方面的管理。该模块通常包含了项目信息管理、项目进度管理、项目成本管…

    2024年7月24日
    600
  • 旅游局管理哪些行业项目

    旅游局是一个专门负责管理和监管旅游活动的政府机构,主要负责的行业项目包括:旅游资源开发、旅游景区管理、旅游市场营销、旅游服务质量监管、旅游政策制定、旅游企业管理、旅游行业统计数据收集与分析、旅游规划与建设、旅游文化推广等。其中,旅游资源开发是旅游局的重要职责之一,它涉及到对旅游资源的勘查、评价、利用…

    2024年7月24日
    400
  • 项目管理的职业证书有哪些

    在项目管理领域,各种职业证书层出不穷,但以下几种证书是最为知名和公认的:PMP(项目管理专业人士)、PRINCE2(项目内控环境)、CAPM(认证项目管理师)、MSP(管理成功的项目)、ACP(敏捷认证专家)和CSM(认证Scrum Master)。各种证书的培训和取得,对从事项目管理工作的人来说,…

    2024年7月24日
    300
  • 项目管理的关键点有哪些

    项目管理的关键点包括:明确目标、制定详细计划、有效沟通、风险管理、资源分配、进度监控、质量控制、变更管理。明确目标是项目管理的基础,确保项目的所有参与者都了解并认同项目的最终目标,这是项目成功的第一步。明确目标不仅要清晰具体,还需可衡量、可实现、有时间限制和相关性。制定详细计划则是根据项目目标,分解…

    2024年7月24日
    500

发表回复

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

400-800-1024

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

分享本页
返回顶部