CN101794215A - 一种汇编执行复杂任务的方法和装置 - Google Patents
一种汇编执行复杂任务的方法和装置 Download PDFInfo
- Publication number
- CN101794215A CN101794215A CN201010120380A CN201010120380A CN101794215A CN 101794215 A CN101794215 A CN 101794215A CN 201010120380 A CN201010120380 A CN 201010120380A CN 201010120380 A CN201010120380 A CN 201010120380A CN 101794215 A CN101794215 A CN 101794215A
- Authority
- CN
- China
- Prior art keywords
- subtask
- current
- task
- information
- substep
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种汇编执行复杂任务的方法和装置,所述复杂任务包括多个子任务,所述子任务包括入口和出口,其中的方法包括:确定步骤:根据当前任务信息,确定需要执行的第一个子任务;准备步骤:获取第一个子任务的入口地址,并准备其执行信息;处理步骤:从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理步骤包括:执行子步骤:进入当前子任务并执行;判断子步骤:执行期间,通过当前任务信息判断需要执行的下一个子任务;获取子步骤:获取下一个子任务的入口地址,并准备其执行信息;转入子步骤:在当前子任务执行完毕时,转到下一个子任务的入口地址。本发明用以在使用小代码量的前提下,减少CPU周期的耗费。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种汇编执行复杂任务的方法和装置。
背景技术
大多数复杂任务,由于任务持续时间较长,故执行起来比较困难。一个常用的解决方法是,将一个复杂任务分解为若干个子任务,这些子任务一般为最小的任务单位,另外,这些子任务之间互不重叠,但有些子任务的执行需要以其它子任务为前提。
例如,一个复杂任务被分解成4个独立的子任务,假设其编号分别为1、2、3、4,且该复杂任务必须按照特定的顺序执行,也即,编号在1之后的子任务不能在子任务1以前执行,编号在2之后的子任务不能在子任务2以前执行,编号在3之后的子任务不能在子任务3以前执行;那么,在执行该复杂任务时,现有技术主要有两种处理方法:
方法一、针对每一个可能的子任务序列设计一个单独的函数,参照图1,可以针对上例中的复杂任务设计15个不同的函数,由于每个函数中的子任务序列不存在有条件地执行,也即,所述序列中的子任务无需按照特定的顺序执行,因此,可以通过使用最理想的代码来将所述序列优化成最佳性能;这样,在执行该复杂任务时,调用函数将调用需要被执行的任务序列,并在该任务序列结束后继续执行下一个函数。
本方法能够将任务序列优化成最佳性能,且在CPU周期方面是最优效率的,但是由于同样的子任务不止在一个序列中出现,例如,子任务1在函数中出现了9次,故会导致大的代码量。
方法二、该方法设计一个母函数,该母函数分析输入参数并决定需要执行哪个子任务,其中,每一个需要执行的子任务都单独执行并在结束后返回该母函数;参照图2,本方法在代码量上有显著缩小,但是,执行每个子任务都需要调用、返回操作,因此本方法会消耗更多的CPU周期。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够一种执行复杂任务的方案,用以在使用小代码量的前提下,减少CPU周期的耗费。
发明内容
本发明所要解决的技术问题是一种汇编执行复杂任务的方法和装置,用以在使用小代码量的前提下,减少CPU周期的耗费。
为了解决上述问题,本发明公开了一种汇编执行复杂任务的方法,所述复杂任务包括多个子任务,所述子任务包括入口和出口,所述方法包括:
确定步骤:根据当前任务信息,确定所述复杂任务中需要执行的第一个子任务;
准备步骤:获取第一个子任务的入口地址,并准备其执行信息;
处理步骤:从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理步骤包括:
执行子步骤:进入当前子任务并执行;
判断子步骤:执行期间,通过当前任务信息判断需要执行的下一个子任务;
获取子步骤:获取下一个子任务的入口地址,并准备其执行信息;
转入子步骤:在当前子任务执行完毕时,转到下一个子任务的入口地址。
优选的,所述方法还包括:
调用步骤:调用第一个子任务;
所述处理步骤还包括:
保存子步骤:将下一个子任务的入口地址,保存于返回寄存器;
所述转入子步骤为,在当前子任务执行完毕时,从所述返回寄存器中读取地址,并跳转过去。
优选的,所述子任务还包括函数,所述函数包括任务代码和多个接口转换代码;
其中,每个接口转换代码针对当前子任务与相应的下一个子任务,并且,在当前任务的出口信息与下一个子任务的入口信息一致时,所述接口转换代码为空;在当前任务的出口信息与下一个子任务的入口信息不一致时,所述接口转换代码不为空,且用于将当前子任务的出口信息转换为下一个子任务的入口信息;
所述执行子步骤为,进入当前子任务,并执行当前子任务的任务代码;
所述转入子步骤包括:
在所述任务代码执行完毕时,执行与下一个子任务相应的接口转换代码;
在所述接口转换代码执行完毕时,转到下一个子任务的入口地址。
优选的,所述执行信息包括子任务的入口信息,以及,需要执行的数据信息。
优选的,所述处理步骤还包括:
写入子步骤:将获取的下一个子任务的入口地址写入地址寄存器。
优选的,所述多个子任务具有对应的任务编号;
所述处理步骤还包括:
检测子步骤:检测是否需要执行编号排在当前子任务之后的子任务,若是,则执行判断子步骤,否则,该复杂任务执行完毕。
本发明还公开了一种汇编执行复杂任务的装置,所述复杂任务包括多个子任务,所述子任务包括入口和出口,所述装置包括:
确定模块,用于根据当前任务信息,确定所述复杂任务中需要执行的第一个子任务;
准备模块,用于获取第一个子任务的入口地址,并准备其执行信息;
处理模块,用于从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理模块包括:
执行子模块,用于进入当前子任务并执行;
判断子模块,用于在执行期间,通过当前任务信息判断需要执行的下一个子任务;
获取子模块,用于获取下一个子任务的入口地址,并准备其执行信息;
转入子模块,用于在当前子任务执行完毕时,转到下一个子任务的入口地址。
优选的,所述装置还包括:
调用模块,用于调用第一个子任务;
所述处理模块还包括:
保存子模块,用于将下一个子任务的入口地址,保存于返回寄存器;
所述转入子模块,用于在当前子任务执行完毕时,从所述返回寄存器中读取地址,并跳转过去。
优选的,所述子任务还包括函数,所述函数包括任务代码和多个接口转换代码;
其中,每个接口转换代码针对当前子任务与相应的下一个子任务,并且,在当前任务的出口信息与下一个子任务的入口信息一致时,所述接口转换代码为空;在当前任务的出口信息与下一个子任务的入口信息不一致时,所述接口转换代码不为空,且用于将当前子任务的出口信息转换为下一个子任务的入口信息;
所述执行子模块,用于执行当前子任务的任务代码;
所述转入子模块包括:
转换执行单元,用于在所述任务代码执行完毕时,执行与下一个子任务相应的接口转换代码;
通信单元,用于在所述接口转换代码执行完毕时,转到下一个子任务的入口地址。
优选的,所述处理模块还包括:
写入子模块,用于将获取的下一个子任务的入口地址写入地址寄存器。
与现有技术相比,本发明具有以下优点:
本发明在执行复杂任务的当前子任务期间,建立从当前子任务的出口通往下一个子任务的入口的路线;这样,所述复杂任务的执行流程为:当前子任务的入口→当前子任务的执行→当前子任务的出口→下一个子任务的入口→下一个子任务的执行;由于所述路线的执行几乎不需要额外的代码,且只需从当前子任务的出口,转到下一个子任务的入口,因此可以避免不必要的调用、返回操作,从而能够减少CPU周期的耗费量;
另外,为保证路线的畅通,本发明还可以在子任务的函数中设计为多个接口转换代码,可用于在当前任务的出口信息与下一个子任务的入口信息不一致时,将当前子任务的出口信息转换为下一个子任务的入口信息,因而,本发明只需额外的小代码段,就可以使得复杂任务序列顺畅执行。
附图说明
图1是现有技术方法一执行复杂任务的流程图;
图2是现有技术方法二执行复杂任务的流程图;
图3是本发明一种汇编执行复杂任务的方法实施例1的流程图;
图4是本发明一种子任务的结构图;
图5是本发明一种复杂任务的执行流程图;
图6是本发明一种汇编执行复杂任务的方法实施例2的流程图;
图7是本发明一种复杂任务执行路线示意图;
图8是本发明一种汇编执行复杂任务的方法实施例3的流程图;
图9是本发明一种汇编执行复杂任务的装置实施例的结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在一个复杂任务被分解为多个子任务时,如果能够将复杂任务中需要执行的一个子任务的末端与下一个子任务的开端结合起来,那么,将可以减少调用、返回的CPU周期。
因此,本发明实施例的核心构思之一在于,在执行复杂任务时,针对需要执行的当前子任务,建立通往下一个子任务的路线,其中,所述路线可以为,从当前子任务的出口到下一个子任务的入口所经过的路径;那么,无论该复杂任务中需要执行的子任务有哪些,都可以根据所述路线来执行任务;所述路线的执行几乎不需要额外的代码,且只需从当前子任务的出口,转到下一个子任务的入口,因此可以避免不必要的调用、返回操作,从而能够减少CPU周期的耗费量。
参照图3,示出了本发明一种汇编执行复杂任务的方法实施例1的流程图,所述复杂任务可以包括多个子任务,所述子任务可以包括入口和出口,所述方法具体可以包括:
确定步骤301、根据当前任务信息,确定所述复杂任务中需要执行的第一个子任务;
在实际中,每个子任务可用于实现一些特定的功能;而在汇编环境下,每个子任务又可对应某个函数,用于执行一些延时、算数运算、格式转换、输出等操作;这样,参照图4所示的子任务结构图,每个子任务可以包括入口、函数和出口三部分。
另外,大多数时候,事先并不知道执行复杂任务中的哪些子任务,需要在执行过程中,根据当前任务信息确定需要执行哪个子任务。
例如,某个任务的工作流程如下:
任务A->复杂任务B->任务C,其中,->代表任务的流向,所述复杂任务B包括4个子任务,分别为子任务1、子任务2、子任务3和子任务4,且该复杂任务必须按照特定的顺序执行,也即,子任务2、3、4不能在1以前执行,子任务3、4不能在2以前执行,子任务4不能在3以前执行;
那么,子任务1、2、3、4都有可能是复杂任务B中需要执行的第一个子任务,因此,需要在任务A执行期间,或者执行完毕时,完成第一个子任务的确定工作。
准备步骤302、获取第一个子任务的入口地址,并准备其执行信息;
假设确定步骤301确定的第一个子任务是子任务2,那么,准备步骤302则用于获取子任务2的入口地址和执行信息。
在实际中,所述执行信息也即执行某个子任务所需要的信息,一般可以包括子任务的入口信息,以及,需要执行的数据信息;其中,所述入口信息可以为某个子任务的输入参数,其可能是常数,也可能来自上一个子任务;所述需要执行的数据信息可以为数据的存储地址。
处理步骤303、从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理步骤303可以包括:
执行子步骤331、进入当前子任务并执行;
本子步骤也即进入当前子任务的入口,并执行其函数;例如,对于任务A->复杂任务B的工作流程,对于第一个子任务,执行路线的来源是任务A的出口,而对于其它子任务,执行路线的来源则是上一个子任务的出口。
判断子步骤332、执行期间,通过当前任务信息判断需要执行的下一个子任务;
由于某些处理器支持VLIW(超长指令字,Very Long InstructionWord)或者delay slot(延迟槽)等技术,因此,本步骤需要执行的下一个子任务的工作可以穿插在当前子任务执行期间并行完成,以节省时间。
获取子步骤333、获取下一个子任务的入口地址,并准备其执行信息;
转入子步骤334、在当前子任务执行完毕时,转到下一个子任务的入口地址。
例如,当前子任务为子任务1,获取得到的下一个子任务3的入口地址为0x1030,本子步骤则是从子任务1的出口转入子任务3的入口。
为使本领域技术人员更好地理解本发明,以下以一个复杂任务的执行过程为例对本实施例进一步说明。
本例设计任务的工作流程为:任务A->复杂任务B->任务C,其中,->代表任务的流向,所述复杂任务B包括4个子任务,分别为子任务1、子任务2、子任务3和子任务4;参照图5所示的复杂任务的执行流程图,具体可以包括以下步骤:
步骤S1、在任务A执行期间,根据当前任务信息确定所述复杂任务中需要执行的第一个子任务为子任务1;
步骤S2、获取子任务1的入口地址,并准备其执行信息;
步骤S3、进入子任务1并执行其函数;执行期间,通过当前任务信息判断需要执行的下一个子任务为子任务2,得到子任务2的入口地址,并准备好其执行信息;
步骤S4、进入子任务1并执行其函数;执行期间,通过当前任务信息判断需要执行的下一个子任务为子任务2,得到子任务2的入口地址,准备好其执行信息;并在子任务1执行完毕时,转到子任务2的入口地址;
步骤S5、进入子任务2并执行其函数;执行期间,通过当前任务信息判断需要执行的下一个子任务为子任务3,得到子任务3的入口地址,准备好其执行信息;并在子任务2执行完毕时,转到子任务3的入口地址;
步骤S6、进入子任务3并执行其函数;执行期间,通过当前任务信息判断需要执行的下一个子任务为子任务4,得到子任务4的入口地址,准备好其执行信息;并在子任务3执行完毕时,转到子任务4的入口地址;
步骤S7、进入子任务4并执行其函数;执行期间,通过当前任务信息判断需要执行的下一个任务为任务C,得到任务C的入口地址,准备好其执行信息;并在子任务4执行完毕时,转到任务C的入口地址。
上例示出了在复杂任务B后紧接着执行任务C的情形,这里的任务C可以是普通任务,也可以是包括多个子任务的复杂任务;因此,本实施例可以适用于多个复杂任务(或者复杂任务+任务)的不间断执行。
另外,在一个复杂任务中,所述多个子任务往往具有对应的任务编号的,如1,2,...,n,其中,n为子任务的数量。
在本发明的一种优选实施例中,为得到某个复杂任务的执行状态,所述处理步骤303还可以包括:
检测子步骤、检测是否需要执行编号排在当前子任务之后的子任务,若是,则执行判断子步骤332,否则,该复杂任务执行完毕。
以上例中的复杂任务B为例,当前子任务的编号为2,所述检测子步骤则是用来检测是否需要执行排在2之后的子任务3、4,若否,复杂任务B执行完毕;所述执行完毕可以信息的形式展示给用户,使用户在第一时间获得某个复杂任务的执行状态。
再者,对于复杂任务B,不同需求下可能出现不同的执行情形,例如,1234,123,124,134,但是,这些情形中具有共同的子任务1,或者,1234和123具有共同的子任务123。
针对上述情形,在本发明的一种优选实施例中,所述处理步骤303还可以包括:
写入子步骤、将获取的下一个子任务的入口地址写入地址寄存器。
可以理解,在准备步骤302后,也可以将第一个子任务的入口地址写入地址寄存器,这样,一个复杂任务中的部分或全部子任务的入口地址会被保存到地址寄存器;当然,还可以同时写入每个子任务的标识,如编号等;那么,在另一种需求下执行该复杂任务时,只需根据标识调用子任务的入口地址即可,因而可以避免地址解码的工作量。
参照图6,示出了本发明一种汇编执行复杂任务的方法实施例2的流程图,所述复杂任务可以包括多个子任务,所述子任务可以包括入口、函数和出口,所述函数可以进一步包括任务代码和多个接口转换代码;其中,每个接口转换代码针对当前子任务与相应的下一个子任务,并且,在当前任务的出口信息与下一个子任务的入口信息一致时,所述接口转换代码为空;在当前任务的出口信息与下一个子任务的入口信息不一致时,所述接口转换代码不为空,且用于将当前子任务的出口信息转换为下一个子任务的入口信息;
所述方法具体可以包括:
确定步骤601、根据当前任务信息,确定所述复杂任务中需要执行的第一个子任务;
准备步骤602、获取第一个子任务的入口地址,并准备其执行信息;
处理步骤603、从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理步骤603具体可以包括:
执行子步骤631、进入当前子任务,并执行当前子任务的任务代码;
判断子步骤632、执行期间,通过当前任务信息判断需要执行的下一个子任务;
获取子步骤633、获取下一个子任务的入口地址,并准备其执行信息;
转入子步骤634、
转换执行操作6341、在所述任务代码执行完毕时,执行与下一个子任务相应的接口转换代码;
通信操作6342、在所述接口转换代码执行完毕时,转到下一个子任务的入口地址。
在大多数时候,当前子任务的出口信息和下一个子任务的入口信息是相同的,此时,可以直接从当前子任务的出口转到下一个子任务的入口;但是,在某些情况下,当前子任务的出口信息和下一个子任务的入口信息是不同的,例如,子任务1的出口参数的数量为1,而子任务2的入口参数的数量则为2.
针对上述情形,本实施例与实施例1的区别在于,在子任务的函数中设计多个接口转换,可用于在当前任务的出口信息与下一个子任务的入口信息不一致时,将当前子任务的出口信息转换为下一个子任务的入口信息,因而,本发明只需额外的小代码段,就可以使得复杂任务序列顺畅执行。
对于包括1、2、3、4四个子任务的复杂任务B,不一定所有的子任务都要执行,也即,除了1234外,还可能包括134、13、14等情形,因此,针对子任务1,不但要设计其到子任务2的接口转换代码,还应设计其到子任务3和子任务4的转换代码。
参照图7所示的复杂任务执行路线示意图,子任务3的出口信息与子任务4的出口信息不一致,故可以在该两个子任务之间增加接口转换代码3/4。
参照图8,示出了本发明一种汇编执行复杂任务的方法实施例3的流程图,所述复杂任务可以包括多个子任务,所述子任务可以包括入口和出口,所述方法具体可以包括:
确定步骤801、根据当前任务信息,确定所述复杂任务中需要执行的第一个子任务;
准备步骤802、获取第一个子任务的入口地址,并准备其执行信息;
调用步骤803、调用第一个子任务;
处理步骤804、从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理步骤804具体可以包括:
执行子步骤841、进入并执行当前子任务;
判断子步骤842、执行期间,通过当前任务信息判断需要执行的下一个子任务;
获取子步骤843、获取下一个子任务的入口地址,并准备其执行信息;
保存子步骤844、将下一个子任务的入口地址,保存于返回寄存器;
转入子步骤845、在当前子任务执行完毕时,从所述返回寄存器中读取地址,并跳转过去。
对应汇编环境下的某个函数,子任务能够被其它函数调用,并能够在实现自身功能后返回到调用它的函数中去。
依据上述原理,本实施例与实施例1的区别在于,引入“返回寄存器”的概念,并且允许处理器通过更新“返回寄存器”的值,这样,采用调用、返回操作也可以完成本发明的方案。
例如,在执行任务A期间调用任务B,A运行到“CALL B”指令时,可以将″CALL B″的下一条指令的地址保存在所述“返回寄存器”中,然后跳转到B执行,而在B运行结束时,可以使用“return”指令,从“返回寄存器”中读取到地址,然后跳转过去。
具体到任务的工作流程:“任务A->复杂任务B(需要执行12)->任务C”,本实施例可以通过以下步骤来实现:
步骤T1、任务A调用子任务1;
步骤T2、子任务1运行,并将获取得到的子任务2的地址保存于“返回寄存器”中;
步骤T3、子任务1返回,程序进入子任务2;
步骤T4、子任务2运行,并将获取得到的任务C的地址保存于“返回寄存器”中;
步骤T5、子任务2返回,程序进入任务C。
因此,相对于现有技术中,任务A调用子任务1→子任务1返回→任务A调用子任务2→子任务2返回,本实施例只需调用需要执行的第一个子任务,然后通过修改“返回寄存器”的值来建立子任务之间的路线,即可实现任务的不间断执行,且在需要执行的子任务数目多时,更能够减少调用次数,从而能够减少CPU周期的耗费量。
参考图9,示出了本发明一种汇编执行复杂任务的装置实施例的结构图,其中,所述复杂任务可以包括多个子任务,所述子任务可以包括入口和出口,所述装置具体可以包括:
确定模块901,用于根据当前任务信息,确定所述复杂任务中需要执行的第一个子任务;
准备模块902,用于获取第一个子任务的入口地址,并准备其执行信息;
处理模块903,用于从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理模块包括:
执行子模块931,用于进入当前子任务并执行;
判断子模块932,用于在执行期间,通过当前任务信息判断需要执行的下一个子任务;
获取子模块933,用于获取下一个子任务的入口地址,并准备其执行信息;
转入子模块934,用于在当前子任务执行完毕时,转到下一个子任务的入口地址。
在具体实现中,可以引入“返回寄存器”的概念,并且允许处理器通过更新“返回寄存器”的值,这样,采用一次调用、多次返回操作也可以完成本发明的方案。
此种情形下,所述装置还可以包括:
调用模块,用于调用第一个子任务;
所述处理模块903还可以包括:
保存子模块,用于将下一个子任务的入口地址,保存于返回寄存器;
此时,所述转入子模块934,则可用于在当前子任务执行完毕时,从所述返回寄存器中读取地址,并跳转过去。
为保证路线的畅通,在本发明的一种优选实施例中,所述子任务还可以包括函数,所述函数可以进一步包括任务代码和多个接口转换代码;
其中,每个接口转换代码针对当前子任务与相应的下一个子任务,并且,在当前任务的出口信息与下一个子任务的入口信息一致时,所述接口转换代码为空;在当前任务的出口信息与下一个子任务的入口信息不一致时,所述接口转换代码不为空,且用于将当前子任务的出口信息转换为下一个子任务的入口信息;
此时,所述执行子模块,可用于执行当前子任务的任务代码;
所述转入子模块934可以进一步包括:
转换执行单元,用于在所述任务代码执行完毕时,执行与下一个子任务相应的接口转换代码;
通信单元,用于在所述接口转换代码执行完毕时,转到下一个子任务的入口地址。
对于包括4个子任务的复杂任务,不同需求下可能出现不同的执行情形,例如,1234,123,124,134,但是,这些情形中具有共同的子任务1,或者,1234和123具有共同的子任务123。
针对上述情形,在本发明的另一种优选实施例中,所述处理模块903还可以包括:
写入子模块,用于将获取的下一个子任务的入口地址写入地址寄存器。
可以理解,还可以同时写入每个子任务的标识,如编号等;那么,在另一种需求下执行该复杂任务时,只需根据标识调用子任务的入口地址即可,因而可以避免地址解码的工作量。
对于装置实施例而言,由于其与图3所示的方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种汇编执行复杂任务的方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种汇编执行复杂任务的方法,其特征在于,所述复杂任务包括多个子任务,所述子任务包括入口和出口,所述方法包括:
确定步骤:根据当前任务信息,确定所述复杂任务中需要执行的第一个子任务;
准备步骤:获取第一个子任务的入口地址,并准备其执行信息;
处理步骤:从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理步骤包括:
执行子步骤:进入当前子任务并执行;
判断子步骤:执行期间,通过当前任务信息判断需要执行的下一个子任务;
获取子步骤:获取下一个子任务的入口地址,并准备其执行信息;
转入子步骤:在当前子任务执行完毕时,转到下一个子任务的入口地址。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
调用步骤:调用第一个子任务;
所述处理步骤还包括:
保存子步骤:将下一个子任务的入口地址,保存于返回寄存器;
所述转入子步骤为,在当前子任务执行完毕时,从所述返回寄存器中读取地址,并跳转过去。
3.如权利要求1所述的方法,其特征在于,所述子任务还包括函数,所述函数包括任务代码和多个接口转换代码;
其中,每个接口转换代码针对当前子任务与相应的下一个子任务,并且,在当前任务的出口信息与下一个子任务的入口信息一致时,所述接口转换代码为空;在当前任务的出口信息与下一个子任务的入口信息不一致时,所述接口转换代码不为空,且用于将当前子任务的出口信息转换为下一个子任务的入口信息;
所述执行子步骤为,进入当前子任务,并执行当前子任务的任务代码;
所述转入子步骤包括:
在所述任务代码执行完毕时,执行与下一个子任务相应的接口转换代码;
在所述接口转换代码执行完毕时,转到下一个子任务的入口地址。
4.如权利要求1所述的方法,其特征在于,所述执行信息包括子任务的入口信息,以及,需要执行的数据信息。
5.如权利要求1所述的方法,其特征在于,所述处理步骤还包括:
写入子步骤:将获取的下一个子任务的入口地址写入地址寄存器。
6.如权利要求1所述的方法,其特征在于,所述多个子任务具有对应的任务编号;
所述处理步骤还包括:
检测子步骤:检测是否需要执行编号排在当前子任务之后的子任务,若是,则执行判断子步骤,否则,该复杂任务执行完毕。
7.一种汇编执行复杂任务的装置,其特征在于,所述复杂任务包括多个子任务,所述子任务包括入口和出口,所述装置包括:
确定模块,用于根据当前任务信息,确定所述复杂任务中需要执行的第一个子任务;
准备模块,用于获取第一个子任务的入口地址,并准备其执行信息;
处理模块,用于从第一个子任务起,将需要执行的每个子任务作为当前子任务进行处理,所述处理模块包括:
执行子模块,用于进入当前子任务并执行;
判断子模块,用于在执行期间,通过当前任务信息判断需要执行的下一个子任务;
获取子模块,用于获取下一个子任务的入口地址,并准备其执行信息;
转入子模块,用于在当前子任务执行完毕时,转到下一个子任务的入口地址。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
调用模块,用于调用第一个子任务;
所述处理模块还包括:
保存子模块,用于将下一个子任务的入口地址,保存于返回寄存器;
所述转入子模块,用于在当前子任务执行完毕时,从所述返回寄存器中读取地址,并跳转过去。
9.如权利要求7所述的装置,其特征在于,所述子任务还包括函数,所述函数包括任务代码和多个接口转换代码;
其中,每个接口转换代码针对当前子任务与相应的下一个子任务,并且,在当前任务的出口信息与下一个子任务的入口信息一致时,所述接口转换代码为空;在当前任务的出口信息与下一个子任务的入口信息不一致时,所述接口转换代码不为空,且用于将当前子任务的出口信息转换为下一个子任务的入口信息;
所述执行子模块,用于执行当前子任务的任务代码;
所述转入子模块包括:
转换执行单元,用于在所述任务代码执行完毕时,执行与下一个子任务相应的接口转换代码;
通信单元,用于在所述接口转换代码执行完毕时,转到下一个子任务的入口地址。
10.如权利要求7所述的装置,其特征在于,所述处理模块还包括:
写入子模块,用于将获取的下一个子任务的入口地址写入地址寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010120380 CN101794215B (zh) | 2010-03-05 | 2010-03-05 | 一种汇编执行复杂任务的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010120380 CN101794215B (zh) | 2010-03-05 | 2010-03-05 | 一种汇编执行复杂任务的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101794215A true CN101794215A (zh) | 2010-08-04 |
CN101794215B CN101794215B (zh) | 2013-07-31 |
Family
ID=42586929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010120380 Expired - Fee Related CN101794215B (zh) | 2010-03-05 | 2010-03-05 | 一种汇编执行复杂任务的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101794215B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219284A (zh) * | 2014-08-11 | 2014-12-17 | 华侨大学 | 基于半同步半异步和管道过滤器模式的服务器设计方法 |
CN109445928A (zh) * | 2018-11-14 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种访问请求处理方法、装置、设备及可读存储介质 |
CN113138807A (zh) * | 2021-04-25 | 2021-07-20 | 上海淇玥信息技术有限公司 | 一种多节点业务任务的执行方法、装置和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4954948A (en) * | 1986-12-29 | 1990-09-04 | Motorola, Inc. | Microprocessor operating system for sequentially executing subtasks |
CN1257592A (zh) * | 1997-05-20 | 2000-06-21 | 西门子公司 | 精减指令集计算机处理器 |
US6854116B1 (en) * | 1992-09-30 | 2005-02-08 | Apple Computer, Inc. | Execution control for process task |
US20100205606A1 (en) * | 2009-02-12 | 2010-08-12 | Panzer Adi | System and method for executing a complex task by sub-tasks |
-
2010
- 2010-03-05 CN CN 201010120380 patent/CN101794215B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4954948A (en) * | 1986-12-29 | 1990-09-04 | Motorola, Inc. | Microprocessor operating system for sequentially executing subtasks |
US6854116B1 (en) * | 1992-09-30 | 2005-02-08 | Apple Computer, Inc. | Execution control for process task |
CN1257592A (zh) * | 1997-05-20 | 2000-06-21 | 西门子公司 | 精减指令集计算机处理器 |
US20100205606A1 (en) * | 2009-02-12 | 2010-08-12 | Panzer Adi | System and method for executing a complex task by sub-tasks |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219284A (zh) * | 2014-08-11 | 2014-12-17 | 华侨大学 | 基于半同步半异步和管道过滤器模式的服务器设计方法 |
CN109445928A (zh) * | 2018-11-14 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种访问请求处理方法、装置、设备及可读存储介质 |
CN113138807A (zh) * | 2021-04-25 | 2021-07-20 | 上海淇玥信息技术有限公司 | 一种多节点业务任务的执行方法、装置和电子设备 |
CN113138807B (zh) * | 2021-04-25 | 2022-09-09 | 上海淇玥信息技术有限公司 | 一种多节点业务任务的执行方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101794215B (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2018203641B2 (en) | Controlling tasks performed by a computing system | |
CN105389158B (zh) | 数据处理系统、编译器、处理器的方法和机器可读介质 | |
CN102063286B (zh) | 程序流控制 | |
US20120324454A1 (en) | Control Flow Graph Driven Operating System | |
US8799881B2 (en) | Program parallelization device and program product | |
CN107203401A (zh) | 一种前端项目构建方法、装置及系统 | |
CN103065221A (zh) | 基于bpel的多学科协同优化流程建模与调度的方法和系统 | |
CN105242962A (zh) | 基于异构众核的轻量级线程快速触发方法 | |
CN105843660A (zh) | 一种编译器的代码优化调度方法 | |
CN101794215B (zh) | 一种汇编执行复杂任务的方法和装置 | |
CN112181522A (zh) | 数据处理的方法、装置以及电子设备 | |
CN102455941B (zh) | 一种基于范式的多任务调度方法、装置 | |
CN101980147A (zh) | 多线程处理器及其指令执行与同步方法及计算机程序产品 | |
WO2016107299A1 (zh) | 一种状态机的合并方法和装置 | |
Cornero et al. | Software synthesis for real-time information processing systems | |
EP3223155A1 (en) | Method for computing equivalence between two execution models | |
WO2008041442A1 (fr) | Procédé de création de programme par parallélisation, dispositif de création de programme par parallélisation, et programme de création de programme par parallélisation | |
Li et al. | Using design space exploration for finding schedules with guaranteed reaction times of synchronous programs on multi-core architecture | |
CN112965798A (zh) | 一种基于分布式多线程的大数据处理方法及系统 | |
JP2007122187A (ja) | プログラム・コード生成装置 | |
CN113238855A (zh) | 一种路径检测方法及装置 | |
Guo et al. | Code generation for sta architecture | |
JP2008269529A (ja) | デバッグ支援装置 | |
Karuri et al. | A generic design flow for application specific processor customization through instruction-set extensions (ISEs) | |
Andrei et al. | Processor bounding for an efficient Non-Preemptive task scheduling algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130731 Termination date: 20190305 |