CN110659032A - 游戏应用的指令执行方法、装置、终端设备和存储介质 - Google Patents
游戏应用的指令执行方法、装置、终端设备和存储介质 Download PDFInfo
- Publication number
- CN110659032A CN110659032A CN201910906966.4A CN201910906966A CN110659032A CN 110659032 A CN110659032 A CN 110659032A CN 201910906966 A CN201910906966 A CN 201910906966A CN 110659032 A CN110659032 A CN 110659032A
- Authority
- CN
- China
- Prior art keywords
- instruction
- game
- instruction code
- updated
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种游戏应用的指令执行方法、装置、终端设备和存储介质,该方法包括:将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中;获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码;根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,控制执行所述终端设备的内存中所述更新后的指令代码。本申请提高了对游戏应用中的游戏指令进行更新的效率。
Description
技术领域
本申请涉及游戏处理技术领域,具体而言,涉及一种游戏应用的指令执行方法、装置、终端设备和存储介质。
背景技术
在应用运行过程中,为了提高处理器(Central Processing Unit,CPU)的运行性能,一般会对处理器执行的处理指令对应的代码段进行优化,处理指令对应的代码段存储在二进制文件中。
为了提高处理器的运行性能,在应用发布之前,对二进制文件中的代码段进行优化时,开发人员一般利用配置文件引导的优化(Profile-Guided Optimization,PGO)技术对二进制文件中的代码段进行处理,这样,在应用发布时,二进制文件中存储的代码段是优化后的二进制代码。但是,应用发布后,二进制文件是不允许修改的,当二进制文件中存在代码段在执行时会降低CPU的运行性能,则需要开发人员线下完成对该处理指令对应的代码段进行优化。研发端在对指令代码进行优化时,一般会等待应用中存在多个处理指令需要进行优化时,才会对应用的版本进行更新,更新版本的时间比较久;对于用户端而言,需要等待更新版本上线,进行应用版本的更新才能运行新的指令代码,导致用户端等待更新的时间比较长,另外,由于整个应用版本的安装包可能会比较大,更新应用版本的过程本身占用时间也比较长。
发明内容
有鉴于此,本申请的目的在于提供一种游戏应用的指令执行方法、装置、终端设备和存储介质,提高了对游戏应用中的游戏指令进行更新的效率。
第一方面,本申请实施例提供了一种游戏应用的指令执行方法,应用于终端设备,所述终端设备中安装有运行目标游戏应用的模拟器,所述模拟器维护有用于存储所述目标游戏应用中更新后的指令代码的数据存储文件;所述方法包括:
将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中;
获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码;
根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,控制执行所述终端设备的内存中所述更新后的指令代码。
在一种实施方式中,控制执行所述终端设备的内存中所述更新后的指令代码之后,还包括:
响应再次针对所述第一游戏指令的触发指令,直接执行所述终端设备的内存中所述更新后的指令代码。
在一种实施方式中,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码,包括:
获取所述第一游戏指令对应的目标函数标识;
基于所述目标函数标识,从所述数据存储文件中提取所述目标函数标识对应的函数下的指令代码。
在一种实施方式中,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码时,还包括:
从所述数据存储文件中,提取所述目标函数标识对应的指令文件的文件标识,以及所述目标函数标识对应的初始指令代码在所述指令文件中的存储位置信息;所述指令文件中存储有所述目标函数标识对应的初始指令代码;
所述根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,包括:
在所述内存中,查找所述文件标识对应的指令文件;
在查找到的指令文件中,确定与所述存储位置信息对应的指令代码,并使用从所述数据存储文件中提取的指令代码替换确定的指令代码。
在一种实施方式中,所述方法还包括:
将所述目标游戏应用的安装目录中第二游戏指令对应的初始指令代码,加载到所述终端设备的内存中,并控制执行所述终端设备的内存中所述第二游戏指令对应的初始指令代码;所述第二游戏指令在预设时长内的被触发次数小于所述第一游戏指令在预设时长内的被触发次数。
在一种实施方式中,根据以下步骤在数据存储文件中存储更新后的指令代码:
在通过所述模拟器运行所述目标游戏应用的过程中,获取各游戏指令对应的函数标识,以及各函数标识对应的初始指令代码的运行性能状态;
当基于各函数标识对应的运行性能状态,确定需要对任一函数标识对应的初始指令代码进行优化更新时,获取该任一函数标识对应的更新后的指令代码;
将该任一函数标识和对应的更新后的指令代码对应存储在所述数据存储文件中。
第二方面,本申请实施例提供了一种游戏应用的指令执行装置,应用于终端设备,所述终端设备中安装有运行目标游戏应用的模拟器,所述模拟器维护有用于存储所述目标游戏应用中更新后的指令代码的数据存储文件;所述装置包括:
加载模块,用于将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中;
获取模块,用于获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码;
处理模块,用于根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,控制执行所述终端设备的内存中所述更新后的指令代码。
在一种实施方式中,所述处理模块还用于:
响应再次针对所述第一游戏指令的触发指令,直接执行所述终端设备的内存中所述更新后的指令代码。
第三方面,本申请实施例提供了一种终端设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当终端设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行上述游戏应用的指令执行方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述游戏应用的指令执行方法的步骤。
本申请实施例提供游戏应用的指令执行方法,将目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到终端设备的内存中,从模拟器的数据存储文件中,获取第一游戏指令对应的更新后的指令代码,根据该更新后的指令代码替换终端设备的内存中第一游戏指令对应的初始指令代码,控制执行终端设备的内存中更新后的指令代码。这样,在通过模拟器运行目标游戏应用的过程中,利用模拟器中的数据存储文件对游戏指令对应指令代码进行更新,实现动态的对游戏指令进行更新的目的,提高了对目标游戏应用中的游戏指令进行更新的效率,也提高了模拟器的使用体验度。
本申请的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的一种游戏应用的指令执行方法的方法流程图;
图2示出了本申请实施例提供的一种游戏应用的指令执行装置的第一种结构示意图;
图3示出了本申请实施例提供的一种游戏应用的指令执行装置的第二种结构示意图;
图4示出了本申请实施例提供的一种终端设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对不同平台研发的应用程序,一般需要在相应的平台中运行,为了在不同的平台运行同一个应用程序,使用动态代码执行技术(Dynamic Binary Transformation,DBT)对平台的二进制代码(即应用程序中的处理指令)进行处理,也就是,对一个平台的二进制代码进行边执行边翻译,以得到在另一个平台可以执行的二进制代码,优点是实现动态的对二进制代码进行优化更新,提高处理指令对应的二进制代码的更新效率。但是,利用DBT技术实现跨平台兼容执行代码时,在二进制代码翻译过程中,翻译得到的能够在另一个平台执行的二进制代码的质量较差,从而降低了CPU执行处理指令时的运行性能。
为了提高处理器的运行性能,考虑使用静态代码转换(Static BinaryTranslation,SBT)技术对应用程序中的二进制代码进行优化,也就是,在运行应用程序之前,线下对应用程序中的二进制代码进行优化,在应用程序运行过程中,处理器执行的是优化后的二进制代码,这样,在一定程度上提高了处理器的运行性能。
相关技术中应用的Bolt项目,一般也是通过静态优化方式对二进制代码进行优化的,对于Bolt项目而言,仅能对Bolt项目自身的二进制代码进行优化,一旦线上使用,当Bolt项目中存在影响处理器运行性能的二进制代码时,则需要线下对相应的二进制代码优化,并在再次发布新版本的应用后,才可以执行优化后的二进制代码,一方面,用户端需要长时间等待新版本的应用,另一方面,在新版本的应用程序的安装包较大时,更新新版本的应用程序耗时比较久,从而导致对处理指令对应的二进制代码的更新效率比较低。
基于此,本申请实施例提供的游戏应用的指令执行方法,将目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到终端设备的内存中,从模拟器的数据存储文件中,获取第一游戏指令对应的更新后的指令代码,根据该更新后的指令代码替换终端设备的内存中第一游戏指令对应的初始指令代码,控制执行终端设备的内存中更新后的指令代码。这样,在通过模拟器运行目标游戏应用的过程中,利用模拟器中的数据存储文件对游戏指令对应指令代码进行更新,实现动态的对游戏指令进行更新的目的,提高了对目标游戏应用中的游戏指令进行更新的效率,也提高了模拟器的使用体验度。同时,模拟器中的数据存储文件存储更新后的指令代码一般为优化后的指令代码,一定程度上可以提高处理器的运行性能。下面对本申请实施例思想进行详细描述。
本申请实施例提供了一种游戏应用的指令执行方法,应用于终端设备,所述终端设备中安装有运行目标游戏应用的模拟器,所述模拟器维护有用于存储所述目标游戏应用中更新后的指令代码的数据存储文件。
应用游戏应用的指令执行方法的终端设备可以是移动终端、个人电脑(PersonalComputer,PC)、平板电脑(Portable Android Device,PAD)等任何可以实施本申请发明思想的终端设备。
模拟器是运行游戏应用程序的软件,模拟器可以掌握游戏应用程序的执行流程和数据,运行不同游戏平台的游戏应用。
数据存储文件中存储的更新后的指令代码为处理器能够执行的机器语言的指令代码,该更新后的指令代码一般为二进制代码。
如图1所示,游戏应用的指令执行方法具体包括以下步骤:
S101,将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中。
目标游戏应用的安装目录为硬盘中的安装目标游戏应用的目录,该安装目录一般是玩家在安装游戏应用程序时选择的;安装目录中存储有多个指令文件,运行不同的指令文件可以实现游戏中不同的游戏功能,指令文件中存储有第一游戏指令对应的初始指令代码,以及第二游戏指令对应的初始指令代码。
为了区分存储第一游戏指令对应的初始指令代码的指令文件和第二游戏指令对应的初始指令代码的指令文件,将存储第一游戏指令对应的初始指令代码的指令文件作为第一指令文件,将存储第二游戏指令对应的初始指令代码的指令文件作为第二指令文件(下文详述)。
第一游戏指令对应的指令代码是游戏应用中的最小逻辑段,玩家在游戏中执行的一个触控操作可能会多次触发第一游戏指令。在目标游戏应用运行过程中,玩家在游戏中执行的触控操作,或者后台执行的游戏处理任务,可能会触发第一游戏指令,该第一游戏指令的被触发次数较多,处理器在频繁执行第一游戏指令时会降低处理器的运行性能,因此,需要对第一游戏指令进行更新,以提高处理器的运行性能。
将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中,一般是在运行目标游戏应用的过程中,首次触发第一游戏指令时执行的,本申请对此不予限制。
下文分别对一次运行目标游戏应用的过程中,首次触发第一游戏指令时第一游戏指令的处理过程,和再次触发第一游戏指令时第一游戏指令的处理过程进行介绍。
在通过模拟器运行目标游戏应用的过程中,响应在本次运行目标游戏应用的过程中首次针对第一游戏指令的触发指令,将目标游戏应用对应的安装目录中第一游戏指令对应的初始指令代码,加载到终端设备的内存中。
在具体实施过程中,在本次运行目标游戏应用,且首次触发第一游戏指令时,处理器需要访问内存,并需要从内存中执行第一游戏指令对应的指令代码,而内存中尚未存储第一游戏指令对应的指令代码,此时,处理器需要从目标游戏应用的安装目录中,读取存储第一游戏指令对应的初始指令代码的第一指令文件,处理器对读取到的该第一指令文件进行编译,编译后的第一指令文件中存储的指令代码为机器语言的指令代码,并将该编译后的第一指令文件加载到内存中。
如,第一游戏指令为T,存储有第一游戏指令T的初始指令代码的指令文件为D,在本次运行目标游戏应用的过程中,响应第一次针对第一游戏指令T的触发指令,处理器读取指令文件D,并对指令文件D进行编译,得到编译后的指令文件,将包含编译后的第一游戏指令T对应的初始指令代码的指令文件加载到内存中。
S102,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码。
数据存储文件中除了存储更新后的指令代码外,还存储有函数标识、指令文件的文件标识和存储位置信息等。其中,指令文件中存储有函数标识对应的初始指令代码,函数标识与目标游戏应用运行过程中执行的游戏指令对应,函数标识可以通过函数名称表征,也可以通过数字或特殊符号表征,可以根据实际情况确定;文件标识可以通过文件名称表征,也可以通过数字或特殊符号表征,可以根据实际情况确定;存储位置信息为函数标识对应的初始指令代码在指令文件中的起始位置和终点位置。
数据存储文件中存储的函数标识(一个函数标识对应一个游戏指令)一般为函数热度大于或者等于设定阈值的函数标识,该设定阈值可以是根据实际情况设定的。其中,函数热度可以是基于在运行目标游戏应用的过程中,预设时间长度内游戏指令的执行次数和预设数目个游戏指令的总执行次数确定的,预设数目可以是运行游戏应用过程中执行的全部游戏指令的总数目,也根据实际情况确定。
函数热度的确定过程如下:
在运行目标游戏应用的过程中,获取执行的各游戏指令的执行次数,按照次数由大到小的顺序对各游戏指令进行排序,获取排序靠前的预设数目个游戏指令对应的执行次数,计算预设数目个游戏指令中每个游戏指令对应的游戏指令的执行次数的和值,针对预设数目个游戏指令中的每个游戏指令,计算该游戏指令的执行次数和该和值的比值,将该比值作为该游戏指令对应的函数标识的函数热度。其中,在获取执行的各游戏指令的执行次数时,可以获取预设时间长度内,目标游戏应用执行的各游戏指令的指令次数,预设时间长度可以根据实际情况确定。
如,在模拟器运行目标游戏应用的过程中,执行了100个游戏指令,每个游戏指令对应有该游戏指令的执行次数,按照次数由大到小的顺序对游戏指令进行排序,排序靠前的前5个游戏指令为A1、A2、……A5,前5个游戏指令对应的执行次数分别为70、60、30、10、5,前5个游戏指令的执行次数的和值为70+60+30+10+5=165,游戏指令为A1对应的函数标识的函数热度为70/165=0.42,游戏指令为A2对应的函数标识的函数热度为60/165=0.36,游戏指令为A3对应的函数标识的函数热度为30/165=0.18,游戏指令为A4对应的函数标识的函数热度为10/165=0.06,游戏指令为A5对应的函数标识的函数热度为5/165=0.03,设定阈值为0.3,则数据存储文件中存储的函数标识为游戏指令A1对应的函数标识和游戏指令A2对应的函数标识。
数据存储文件中存储的更新后的指令代码一般是研发人员在运行目标游戏应用的过程中,从目标游戏应用中获取影响处理器的运行性能的游戏指令对应的初始指令代码,并对获取的初始指令代码进行优化处理,得到更新后的指令代码并在数据存储文件中存储。
通过以下步骤实现在数据存储文件中存储更新后的指令代码:
在通过所述模拟器运行所述目标游戏应用的过程中,获取各游戏指令对应的函数标识,以及各函数标识对应的初始指令代码的运行性能状态;
当基于各函数标识对应的运行性能状态,确定需要对任一函数标识对应的初始指令代码进行优化更新时,获取该任一函数标识对应的更新后的指令代码;
将该任一函数标识和对应的更新后的指令代码对应存储在所述数据存储文件中。
这里,运行性能状态可以通过函数标识对应的函数热度表征。
在具体实施过程中,在通过模拟器运行目标游戏应用的过程中,获取执行的各个游戏指令对应的函数标识,以及每个函数标识对应的函数热度,针对每个函数标识,比对该函数标识对应的函数热度与设定阈值,若该函数标识对应的函数热度大于或者等于设定阈值,则确定该函数标识对应的初始指令代码需要进行优化更新,获取该函数标识对应的更新后的指令代码,并在数据存储文件中存储该函数标识和对应的更新后的指令代码。
以下介绍对任一函数标识对应的初始指令代码进行优化更新。
研发人员在通过模拟器运行目标游戏应用的过程中,可以综合系统性能分析(Perf)工具、调试工具、反汇编工具、汇编工具对函数标识对应的初始指令代码进行优化更新。
在模拟器运行目标游戏应用的过程中,运行Perf工具可以获取目标游戏应用中的函数热度大于设定阈值的函数标识,利用调式工具可以暂停该函数标识对应的初始指令代码的执行,利用反汇编工具对该函数标识对应的初始指令代码进行反汇编处理,得到汇编语言的指令代码,利用单指令多数据流(Single Instruction Multiple Data,SIMD)方法对汇编语言的指令代码的逻辑进行优化,或者通过空间换时间等性能优化方法对该汇编语言的指令代码进行优化处理,得到优化后的指令代码,由于目标程序运行过程中,处理器执行的是机器语言的指令代码,因此,在得到优化后的指令代码后,需要进一步利用汇编工具优化后的指令代码进行汇编处理,以得到机器语言的指令代码,也就是,函数热度大于设定阈值的函数标识对应的更新后的指令代码。
在得到数据存储文件后,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码,具体包括以下步骤:
获取所述第一游戏指令对应的目标函数标识;
基于所述目标函数标识,从所述模拟器的数据存储文件中提取所述目标函数标识对应的指令代码。
在具体实施过程中,在将第一指令文件(存储有第一游戏指令对应的初始指令代码)加载到内存中后,从内存中存储的该第一指令文件中,获取第一游戏指令对应的目标函数标识,在数据存储文件中,查找与该目标函数标识相同的函数标识,并从数据存储文件中提取查找到的函数标识对应的指令代码,将提取的该指令代码作为第一游戏指令对应的更新后的指令代码。
S103,根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,控制执行所述终端设备的内存中所述更新后的指令代码。
在执行S102时,也就是,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码时,还包括:
从所述数据存储文件中,提取所述目标函数标识对应的指令文件的文件标识,以及所述目标函数标识对应的初始指令代码在所述指令文件中的存储位置信息;所述指令文件中存储有所述目标函数标识对应的初始指令代码;其中,存储位置信息为目标函数标识对应的初始指令代码在指令文件中起始位置和终点位置。
在执行S103时,也就是,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码,包括:
在所述内存中,查找所述文件标识对应的指令文件;
在查找到的指令文件中,确定与所述存储位置信息对应的指令代码,并使用从所述数据存储文件中提取的指令代码替换确定的指令代码。
在具体实施过程中,在从数据存储文件中提取到目标函数标识、文件标识、存储位置信息、更新后的指令代码后,在内存中,查找提取的文件标识对应的指令文件。
在查找到指令文件后,根据目标函数标识对应的初始指令代码,在指令文件中的起始位置和终点位置,从查找到的指令文件中,确定该查找到的指令文件中需要替换的指令代码,进一步,使用从数据存储文件中提取的指令代码替换确定的指令代码。
在替换掉第一指令文件中第一游戏指令对应的初始指令代码后,处理器在内存中,执行第一指令文件中存储的第一游戏指令对应的更新后的指令代码。一方面,通过模拟器中的数据存储文件中的更新后的指令代码,对游戏指令进行更新,实现动态的对指令文件中的指令代码进行优化更新的目的,提高了对游戏指令对应的指令代码进行更新的效率,另一方面,提高了处理器执行第一游戏指令对应的指令代码时的运行效率和运行速度。
在本次运行目标游戏应用的过程中,以下对再次触发第一游戏指令时第一游戏指令的处理过程进行介绍。
响应再次针对第一游戏指令的触发指令,也就是,在本次运行目标游戏应用的过程中,当再次触发第一游戏指令时,直接执行所述终端设备的内存中所述更新后的指令代码。
在具体实施过程中,在本次运行目标游戏应用过程中,玩家在目标游戏中执行的触控操作会多次触发第一游戏指令,当玩家执行的触控操作再次触发第一游戏指令后,处理器会再次访问内存,在确定内存中存储有的最新更新的第一游戏指令的指令代码后,直接在内存中执行更新后的指令代码。
在运行目标游戏应用的过程中,玩家在目标游戏中执行的触控操作,或者后台执行的游戏处理任务,除了会触发第一游戏指令外,也会触发第二游戏指令,第二游戏指令对应的指令代码是游戏应用中的最小逻辑段,一般地,第二游戏指令在预设时长内的被触发次数小于第一游戏指令在预设时长内的被触发次数,第二游戏指令的执行可能会对处理器的运行性能带来影响,但是,此类游戏指令被执行次数较少,可以忽略该类游戏指令对处理器的运行性能的影响,因此,在运行目标游戏应用的过程中,可以不对第二游戏指令进行更新。其中,预设时长根据实际情况确定。
下文分别对一次运行目标游戏应用的过程中,首次触发第二游戏指令时第二游戏指令的处理过程,和再次触发第二游戏指令时第二游戏指令的处理过程进行介绍。
在触发第二游戏指令时,将所述目标游戏应用的安装目录中第二游戏指令对应的初始指令代码,加载到所述终端设备的内存中,并控制执行所述终端设备的内存中所述第二游戏指令对应的初始指令代码。
在具体实施过程中,在模拟器运行目标游戏应用的过程中,且在本次运行目标游戏应用时,首次触发第二游戏指令后,处理器从目标游戏应用的安装目录中,读取存储第二游戏指令对应的初始指令代码的第二指令文件,并对读取到的该第二指令文件进行编译处理,并将编译后的该第二指令文件加载到终端设备的内存中,执行内存中存储的该第二指令文件中第二游戏指令对应的初始指令代码。
在本次运行目标游戏应用的过程中,若玩家在目标游戏中执行的触控操作再次触发第二游戏指令时,处理器会再次访问内存,并直接执行内存中存储的该指令文件中的第二游戏指令对应的初始指令代码。
本申请实施例提供的游戏应用的指令执行方法,将目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到终端设备的内存中,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码,根据该更新后的指令代码替换终端设备的内存中第一游戏指令对应的初始指令代码,控制执行终端设备的内存中更新后的指令代码。这样,在通过模拟器运行目标游戏应用的过程中,利用模拟器中的数据存储文件对游戏指令对应指令代码进行更新,实现动态的对游戏指令进行更新的目的,提高了对目标游戏应用中的游戏指令进行更新的效率,也提高了模拟器的使用体验度。同时,终端设备的处理器在内存中执行的为优化后的指令代码,一定程度上可以提高处理器的运行性能。
基于同一发明构思,本申请实施例中还提供了与游戏应用的指令执行方法对应的游戏应用的指令执行装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述游戏应用的指令执行方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
本申请实施例提供了一种游戏应用的指令执行装置,如图2所示,应用于终端设备,所述终端设备中安装有运行目标游戏应用的模拟器,所述模拟器维护有用于存储所述目标游戏应用中更新后的指令代码的数据存储文件;所述装置包括:
加载模块21,用于将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中;
获取模块22,用于获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码;
处理模块23,用于根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,控制执行所述终端设备的内存中所述更新后的指令代码。
在一些实施例中,所述处理模块23还用于:
响应再次针对所述第一游戏指令的触发指令,直接执行所述终端设备的内存中所述更新后的指令代码。
在一些实施例中,所述处理模块23用于根据以下步骤从所述模拟器的数据存储文件中提取所述第一游戏指令对应的更新后的指令代码:
获取所述第一游戏指令对应的目标函数标识;
基于所述目标函数标识,从所述数据存储文件中提取所述目标函数标识对应的函数下的指令代码。
在一些实施例中,所述获取模块22获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码时,还用于:
从所述数据存储文件中,提取所述目标函数标识对应的指令文件的文件标识,以及所述目标函数标识对应的初始指令代码在所述指令文件中的存储位置信息;所述指令文件中存储有所述目标函数标识对应的初始指令代码;
所述处理模块23具体用于:
在所述内存中,查找所述文件标识对应的指令文件;
在查找到的指令文件中,确定与所述存储位置信息对应的指令代码,并使用从所述数据存储文件中提取的指令代码替换确定的指令代码。
在一些实施例中,所述加载模块21还用于:
将所述目标游戏应用的安装目录中第二游戏指令对应的初始指令代码,加载到所述终端设备的内存中;所述第二游戏指令在预设时长内的被触发次数小于所述第一游戏指令在预设时长内的被触发次数。
所述处理模块23还用于:
控制执行所述终端设备的内存中所述第二游戏指令对应的初始指令代码。
本申请实施例提供了又一种游戏应用的指令执行装置,如图3所示,该装置与图2中的装置相比,还包括:存储模块24。
所述存储模块24用于根据以下步骤在数据存储文件中存储更新后的指令代码:
在通过所述模拟器运行所述目标游戏应用的过程中,获取各游戏指令对应的函数标识,以及各函数标识对应的初始指令代码的运行性能状态;
当基于各函数标识对应的运行性能状态,确定需要对任一函数标识对应的初始指令代码进行优化更新时,获取该任一函数标识对应的更新后的指令代码;
将该任一函数标识和对应的更新后的指令代码对应存储在所述数据存储文件中。
本申请实施例还提供了一种终端设备,如图4所示,为本申请实施例提供的终端设备40结构示意图,包括:
处理器41、存储器42、和总线43;存储器42用于存储执行指令,包括内存421和外部存储器422;这里的内存421也称内存储器,用于暂时存放处理器41中的运算数据,以及与硬盘等外部存储器422交换的数据,处理器41通过内存421与外部存储器422进行数据交换,当所述终端设备40运行时,所述处理器41与所述存储器42之间通过总线43通信,使得所述处理器41在用户态执行以下指令:
将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中;
获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码;
根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,控制执行所述终端设备的内存中所述更新后的指令代码。
一种可能的实施方式中,处理器41执行的指令中,控制执行所述终端设备的内存中所述更新后的指令代码之后,还包括:
响应再次针对所述第一游戏指令的触发指令,直接执行所述终端设备的内存中所述更新后的指令代码。
一种可能的实施方式中,处理器41执行的指令中,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码,包括:
获取所述第一游戏指令对应的目标函数标识;
基于所述目标函数标识,从所述数据存储文件中提取所述目标函数标识对应的函数下的指令代码。
一种可能的实施方式中,处理器41执行的指令中,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码时,还包括:
从所述数据存储文件中,提取所述指令代码所对应的指令文件的文件标识,以及该指令代码在所述指令文件中的存储位置信息;
所述根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,包括:
在所述内存中,查找所述文件标识对应的指令文件;
在查找到的指令文件中,确定与所述存储位置信息对应的指令代码,并使用从所述数据存储文件中提取的指令代码替换确定的指令代码。
一种可能的实施方式中,处理器41执行的指令中,所述方法还包括:
将所述目标游戏应用的安装目录中第二游戏指令对应的初始指令代码,加载到所述终端设备的内存中,并控制执行所述终端设备的内存中所述第二游戏指令对应的初始指令代码;所述第二游戏指令在预设时长内的被触发次数小于所述第一游戏指令在预设时长内的被触发次数。
一种可能的实施方式中,处理器41执行的指令中,根据以下步骤在数据存储文件中存储更新后的指令代码:
从所述数据存储文件中,提取所述目标函数标识对应的指令文件的文件标识,以及所述目标函数标识对应的初始指令代码在所述指令文件中的存储位置信息;所述指令文件中存储有所述目标函数标识对应的初始指令代码;
当基于各函数标识对应的运行性能状态,确定需要对任一函数标识对应的初始指令代码进行优化更新时,获取该任一函数标识对应的更新后的指令代码;
将该任一函数标识和对应的更新后的指令代码对应存储在所述数据存储文件中。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的信息播放控制方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种游戏应用的指令执行方法,其特征在于,应用于终端设备,所述终端设备中安装有运行目标游戏应用的模拟器,所述模拟器维护有用于存储所述目标游戏应用中更新后的指令代码的数据存储文件;所述方法包括:
将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中;
获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码;
根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,控制执行所述终端设备的内存中所述更新后的指令代码。
2.如权利要求1所述的指令执行方法,其特征在于,所述控制执行所述终端设备的内存中所述更新后的指令代码之后,还包括:
响应再次针对所述第一游戏指令的触发指令,直接执行所述终端设备的内存中所述更新后的指令代码。
3.如权利要求1所述的指令执行方法,其特征在于,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码,包括:
获取所述第一游戏指令对应的目标函数标识;
基于所述目标函数标识,从所述数据存储文件中提取所述目标函数标识对应的函数下的指令代码。
4.如权利要求3所述的指令执行方法,其特征在于,获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码时,还包括:
从所述数据存储文件中,提取所述目标函数标识对应的指令文件的文件标识,以及所述目标函数标识对应的初始指令代码在所述指令文件中的存储位置信息;所述指令文件中存储有所述目标函数标识对应的初始指令代码;
所述根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,包括:
在所述内存中,查找所述文件标识对应的指令文件;
在查找到的指令文件中,确定与所述存储位置信息对应的指令代码,并使用从所述数据存储文件中提取的指令代码替换确定的指令代码。
5.如权利要求1所述的指令执行方法,其特征在于,所述方法还包括:
将所述目标游戏应用的安装目录中第二游戏指令对应的初始指令代码,加载到所述终端设备的内存中,并控制执行所述终端设备的内存中所述第二游戏指令对应的初始指令代码;所述第二游戏指令在预设时长内的被触发次数小于所述第一游戏指令在预设时长内的被触发次数。
6.如权利要求1所述的指令执行方法,其特征在于,根据以下步骤在数据存储文件中存储更新后的指令代码:
在通过所述模拟器运行所述目标游戏应用的过程中,获取各游戏指令对应的函数标识,以及各函数标识对应的初始指令代码的运行性能状态;
当基于各函数标识对应的运行性能状态,确定需要对任一函数标识对应的初始指令代码进行优化更新时,获取该任一函数标识对应的更新后的指令代码;
将该任一函数标识和对应的更新后的指令代码对应存储在所述数据存储文件中。
7.一种游戏应用的指令执行装置,其特征在于,应用于终端设备,所述终端设备中安装有运行目标游戏应用的模拟器,所述模拟器维护有用于存储所述目标游戏应用中更新后的指令代码的数据存储文件;所述装置包括:
加载模块,用于将所述目标游戏应用的安装目录中第一游戏指令对应的初始指令代码,加载到所述终端设备的内存中;
获取模块,用于获取所述模拟器的数据存储文件中与所述第一游戏指令对应的更新后的指令代码;
处理模块,用于根据该更新后的指令代码替换所述终端设备的内存中所述第一游戏指令对应的初始指令代码,控制执行所述终端设备的内存中所述更新后的指令代码。
8.如权利要求7所述的指令执行装置,其特征在于,所述处理模块还用于:
响应再次针对所述第一游戏指令的触发指令,直接执行所述终端设备的内存中所述更新后的指令代码。
9.一种终端设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当终端设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至6任一所述游戏应用的指令执行方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至6任一所述游戏应用的指令执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910906966.4A CN110659032B (zh) | 2019-09-24 | 2019-09-24 | 游戏应用的指令执行方法、装置、终端设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910906966.4A CN110659032B (zh) | 2019-09-24 | 2019-09-24 | 游戏应用的指令执行方法、装置、终端设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659032A true CN110659032A (zh) | 2020-01-07 |
CN110659032B CN110659032B (zh) | 2023-08-22 |
Family
ID=69038925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910906966.4A Active CN110659032B (zh) | 2019-09-24 | 2019-09-24 | 游戏应用的指令执行方法、装置、终端设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659032B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113784181A (zh) * | 2021-08-30 | 2021-12-10 | 深圳市金锐显数码科技有限公司 | 一种电视机游戏运行的方法及电视机 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2012244233A1 (en) * | 2006-10-25 | 2012-11-15 | Igt | Systems and methods for transmitting and installing software on a gaming machine in a gaming network |
CN107222510A (zh) * | 2017-07-21 | 2017-09-29 | 腾讯科技(深圳)有限公司 | 一种游戏同步方法、系统及相关设备 |
CN107544896A (zh) * | 2017-08-11 | 2018-01-05 | 深圳震有科技股份有限公司 | 一种函数调用次数的统计方法、存储介质及终端设备 |
CN108027748A (zh) * | 2015-07-23 | 2018-05-11 | 国立大学法人东京工业大学 | 指令集模拟器及其模拟器生成方法 |
CN108345773A (zh) * | 2017-07-27 | 2018-07-31 | 江苏通付盾信息安全技术有限公司 | 基于虚拟机的代码保护方法及装置、电子设备、存储介质 |
CN109918188A (zh) * | 2019-03-27 | 2019-06-21 | 网易(杭州)网络有限公司 | 游戏模式的切换方法、装置、电子设备及存储介质 |
CN110244984A (zh) * | 2018-03-06 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 应用程序处理方法、装置、存储介质和计算机设备 |
-
2019
- 2019-09-24 CN CN201910906966.4A patent/CN110659032B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2012244233A1 (en) * | 2006-10-25 | 2012-11-15 | Igt | Systems and methods for transmitting and installing software on a gaming machine in a gaming network |
CN108027748A (zh) * | 2015-07-23 | 2018-05-11 | 国立大学法人东京工业大学 | 指令集模拟器及其模拟器生成方法 |
CN107222510A (zh) * | 2017-07-21 | 2017-09-29 | 腾讯科技(深圳)有限公司 | 一种游戏同步方法、系统及相关设备 |
CN108345773A (zh) * | 2017-07-27 | 2018-07-31 | 江苏通付盾信息安全技术有限公司 | 基于虚拟机的代码保护方法及装置、电子设备、存储介质 |
CN107544896A (zh) * | 2017-08-11 | 2018-01-05 | 深圳震有科技股份有限公司 | 一种函数调用次数的统计方法、存储介质及终端设备 |
CN110244984A (zh) * | 2018-03-06 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 应用程序处理方法、装置、存储介质和计算机设备 |
CN109918188A (zh) * | 2019-03-27 | 2019-06-21 | 网易(杭州)网络有限公司 | 游戏模式的切换方法、装置、电子设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113784181A (zh) * | 2021-08-30 | 2021-12-10 | 深圳市金锐显数码科技有限公司 | 一种电视机游戏运行的方法及电视机 |
Also Published As
Publication number | Publication date |
---|---|
CN110659032B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110287702B (zh) | 一种二进制漏洞克隆检测方法及装置 | |
CN112015491B (zh) | 实现函数跳转的方法、装置及计算机存储介质 | |
CN107480327B (zh) | 一种仿真验证方法、装置和电子设备 | |
JP6418696B2 (ja) | 命令セットシミュレータおよびそのシミュレータ生成方法 | |
CN111651752B (zh) | 一种获取容器需要的系统调用白名单的方法 | |
CN105183592A (zh) | 用于支持性能分析的方法和装置 | |
KR20170057264A (ko) | 멀티 컨텍스트 지능형 지원 기능을 갖는 코드 개발 툴 | |
KR20150061203A (ko) | 네이티브 빌드 기반의 임베디드 소프트웨어 개발 환경을 지원하기 위한 임베디드 소프트웨어 개발 도구 제공 방법 및 장치 | |
CN113110865A (zh) | 一种服务器热更新方法及装置 | |
Shen et al. | An LLVM-based hybrid binary translation system | |
CN110659032B (zh) | 游戏应用的指令执行方法、装置、终端设备和存储介质 | |
CN115935631A (zh) | 用于车机设备的测试系统和方法、存储介质 | |
CN114610364A (zh) | 应用程序更新、应用程序开发方法、装置及计算机设备 | |
CN105550575B (zh) | 一种未导出的函数地址和数据结构偏移的获取方法及装置 | |
CN117215963B (zh) | 模拟器程序检查点保存和恢复的方法、系统及相关设备 | |
CN111831395B (zh) | 一种行为监控分析方法与系统 | |
JP4968325B2 (ja) | ソフトウェア最適化装置、および最適化方法 | |
CN107526966B (zh) | 一种Android平台的复合污点传播追踪方法 | |
CN114610516A (zh) | 应用程序的修复方法、装置、计算机设备以及存储介质 | |
CN109426546B (zh) | 应用启动方法及装置、计算机存储介质及设备 | |
CN113050948B (zh) | 动态库优化方法、装置、设备及存储介质 | |
US9606779B2 (en) | Data processing system and data simulation method in the system | |
CN102750167A (zh) | 应用程序启动方法、装置和计算机系统 | |
JP2010140233A (ja) | エミュレーションシステム及びエミュレーション方法 | |
WO2009157795A1 (en) | Static code recognition for binary translation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |