CN107291423A - 构建运行环境的方法和装置 - Google Patents

构建运行环境的方法和装置 Download PDF

Info

Publication number
CN107291423A
CN107291423A CN201610202997.8A CN201610202997A CN107291423A CN 107291423 A CN107291423 A CN 107291423A CN 201610202997 A CN201610202997 A CN 201610202997A CN 107291423 A CN107291423 A CN 107291423A
Authority
CN
China
Prior art keywords
virtual address
stack
space
emulated memory
heap
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
Application number
CN201610202997.8A
Other languages
English (en)
Other versions
CN107291423B (zh
Inventor
钟万勇
张宝祺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201610202997.8A priority Critical patent/CN107291423B/zh
Publication of CN107291423A publication Critical patent/CN107291423A/zh
Application granted granted Critical
Publication of CN107291423B publication Critical patent/CN107291423B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Abstract

本发明提供一种构建运行环境的方法和装置,其中,该方法包括:首先对cache进行加锁,将加锁后的cache作为模拟内存;然后根据模拟内存的物理地址获取对应的虚拟地址;再根据虚拟地址在模拟内存中设置堆指针和栈指针;并根据可执行与可链接格式ELF文件结构在模拟内存中设置用于堆指针寻址的各个段。本发明通过上述技术方案构建出了C语言运行环境,使得开发人员无需使用汇编语言来编写内存配置,而可以直接采用C语言来编写内存配置,从而程序可读性高,且便于维护,进而方便了开发人员的开发测试。

Description

构建运行环境的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种构建运行环境的方法和装置。
背景技术
PMON是一个兼有基本输入输出系统(Basic Input Output System,BIOS)和启动装载(bootloader)部分功能的开放源码软件,多用于嵌入式系统。基于无内部互锁流水级的微处理器(Microprocessor without interlocked pipedstages,MIPS)架构的系统采用PMON作为类BIOS兼bootloader,并在其基础上做了很多完善工作,支持BIOS启动配置,内核加载,程序调试,内存寄存器显示、设置以及内存反汇编等等。
目前,PMON源代码中有一部分代码是用汇编语言编写的,例如PMON源代码中BIOS启动配置中的内存配置部分。开发人员在进行开发测试时,需要采用汇编语言来读取或改写内存配置等代码部分。
但是,在实际开发过程中发现,采用汇编语言编写的程序可读性差、且不便于维护以及开发人员的开发测试。
发明内容
本发明提供一种构建运行环境的方法和装置,使得开发人员可以直接采用C语言来编写内存配置,从而程序可读性好、且便于维护以及开发人员的开发测试。
本发明提供一种构建运行环境的方法,包括:
对cache进行加锁,将加锁后的cache作为模拟内存;
根据模拟内存的物理地址获取对应的虚拟地址;
根据虚拟地址在模拟内存中设置堆指针和栈指针;
根据可执行与可链接格式ELF文件结构在模拟内存中设置用于堆指针寻址的各个段。
在本发明的一实施例中,上述方法还包括:
在模拟内存中设置堆空间和栈空间;
将栈空间对应的虚拟地址更改为需要经过旁路转换缓冲TLB映射的虚拟地址;
根据栈空间的大小计算出映射到栈空间所需的TLB表项的数量,并根据栈空间对应的需要经过TLB映射的虚拟地址填写TLB表项;
根据栈空间对应的需要经过TLB映射的虚拟地址重设栈指针。
在本发明的一实施例中,栈空间对应的虚拟地址高于堆空间对应的虚拟地址。
在本发明的一实施例中,根据虚拟地址在模拟内存中设置堆指针和栈指针,包括:
设置堆指针指向模拟内存的最顶部对应的虚拟地址;
设置栈指针指向模拟内存的最底部对应的虚拟地址。
在本发明的一实施例中,堆空间与栈空间的比例为3:1。
在本发明的一实施例中,模拟内存中设置的各个段至少包括:代码段、数据段和块数据段。
本发明还提供一种构建运行环境的装置,包括:
锁缓存cache模块,用于对cache加锁,将加锁后的cache作为模拟内存;
获取模块,用于根据模拟内存的物理地址获取对应的虚拟地址;
设置模块,用于根据虚拟地址在模拟内存中设置堆指针和栈指针;
设置模块,还用于根据可执行与可链接格式ELF文件结构在模拟内存中设置用于堆指针寻址的各个段。
在本发明的一实施例中,上述装置还包括:更改模块和旁路转换缓冲TLB处理模块;
设置模块,还用于在模拟内存中设置堆空间和栈空间;
更改模块,用于将栈空间对应的虚拟地址更改为需要经过TLB映射的虚拟地址;
TLB处理模块,用于根据栈空间的大小计算出映射到栈空间所需的TLB表项的数量,并根据栈空间对应的需要经过TLB映射的虚拟地址填写TLB表项;
设置模块,还用于根据栈空间对应的需要经过TLB映射的虚拟地址重设栈指针。
在本发明的一实施例中,栈空间对应的虚拟地址高于堆空间对应的虚拟地址。
在本发明的一实施例中,在根据虚拟地址在模拟内存中设置堆指针和栈指针方面,设置模块具体用于:
设置堆指针指向模拟内存的最顶部对应的虚拟地址;
设置栈指针指向模拟内存的最底部对应的虚拟地址。
在本发明的一实施例中,堆空间与栈空间的比例为3:1。
在本发明的一实施例中,模拟内存中设置的各个段至少包括:代码段、数据段和块数据段。
本发明实施例提供的构建运行环境的方法和装置,通过对cache加锁构造了一个临时的模拟内存空间,再在模拟内存中设置堆指针、栈指针以及各个段,即构建出了C语言运行环境,使得开发人员无需使用汇编语言来编写内存配置,而可以直接采用C语言来编写内存配置,从而程序可读性高,且便于维护,进而方便了开发人员的开发测试。
附图说明
图1为本发明提供的构建运行环境的方法实施例一的流程示意图;
图2为本发明提供的模拟内存的一种结构示意图;
图3为本发明提供的构建运行环境的方法实施例二的流程示意图;
图4为本发明提供的模拟内存的另一种结构示意图;
图5为本发明提供的构建运行环境的装置实施例一的结构示意图;
图6为本发明提供的构建运行环境的装置实施例二的结构示意图。
附图标记说明:
10-锁cache模块;
20-获取模块;
30-设置模块;
40-更改模块;
50-TLB处理模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例涉及的方法和装置可以用于PMON之中,用来编写内存配置等部分;还可以用于其他程序文件如启动程序BOOT之中,使程序文件更加的精简。
本发明实施例提供的方法和装置,旨在解决现有技术中在PMON中采用汇编语言编写内存配置不便于开发人员的开发测试的技术问题。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明提供的构建运行环境的方法实施例一的流程示意图,如图1所示,本实施例提供的方法包括:
步骤S101、对cache加锁,将加锁后的cache作为模拟内存。
系统上电之后,首先运行PMON,在通过内存配置部分进行内存初始化工作后,才可以加载内核等其他程序模块。由于cache一致性原因,在cache中写入的数据会被写回内存,而在内存初始化之前,内存和内存控制器都处于不确定的状态,若在cache中写入数据,这些数据写回内存后就会出现各种错误。最后一级缓存cache具有锁机制的MIPS处理器在应用时,通过配置锁窗口寄存器,落在被锁区域中的最后一级cache块会被锁住,当在这些cache块中写入数据时,数据不会被写回内存;本实施例中采用cache锁机制将多路组相联的cache的某几路加锁,加锁后的几路cache就可以当做一个临时的模拟内存空间来使用了,从而可以像读写内存中的数据一样对cache中的数据进行读写。
在具体实现时,可以通过系统调用sys_scache_lock(unsigned long addr,unsigned int size)将物理地址addr开始的size字节大小的数据锁到cache中,需要释放时调用sys_scache_unlock(unsigned long addr,unsigned int size)进行解锁;当然,也可以采用其他方式实现加锁和解锁操作,此处不再赘述。
步骤S102、根据模拟内存的物理地址获取对应的虚拟地址。
在对cache加锁时,根据加锁的几路cache即可获知加锁后的cache(即模拟内存)的物理地址范围,再根据MIPS处理器中预先设置好的虚拟地址到物理地址的转换表,即可获取模拟内存对应的虚拟地址范围。
步骤S103、根据虚拟地址在模拟内存中设置堆指针和栈指针。
具体的,在设置堆指针GP和栈指针SP时,可根据模拟内存对应的虚拟地址分别给GP和SP赋一个初始值,使得GP和SP指向模拟内存的预设位置。由于栈是向低地址扩展的数据结构,堆是向高地址扩展的数据结构,因此,优选的,GP指向模拟内存的最顶部对应的虚拟地址,SP指向模拟内存的最底部对应的虚拟地址;即,将模拟内存对应的虚拟地址范围中的起始地址赋值给GP,将模拟内存对应的虚拟地址范围中的终止地址赋值给SP,以提高内存利用率。
图2为本发明提供的模拟内存的一种结构示意图,如图2所示,模拟内存的物理地址从0x1fc00000到0x1fc5fff8,对应的虚拟地址从0x9fc00000到0x9fc5fff8。GP指向模拟内存的最顶部对应的虚拟地址,即0x9fc00000;SP指向模拟内存的最底部对应的虚拟地址,即0x9fc5fff8。需要说明的是,图2中栈空间(stack)对应的虚拟地址从0x9fc40000到0x9fc5fff8,这只是一种示例性说明,以便于说明本发明的技术方案,在实际使用时,可以不明确划分堆空间(即堆指针可以利用的空间)与栈空间(即栈指针可以利用的空间)的大小,只要使用的堆空间与栈空间之和不超出模拟内存空间即可。
步骤S104、根据ELF文件结构在模拟内存中设置用于堆指针寻址的各个段。
可执行和可链接格式(Executable and Linkable Format,ELF)文件是Linux默认的目标文件格式,参与程序的连接(建立一个程序)和程序的执行(运行一个程序),在建立好临时的存储空间(即模拟内存)后,需要根据ELF文件结构在模拟内存中设置各个段的相对位置,以便于GP寻址。
具体的,ELF文件中常用的段有代码段.text、数据段.data、块数据段.bss、只读数据段.rodata等,其中,代码段.text中存储程序的指令序列;数据段.data中存储程序中已经被明确初始化的全局数据,包括C语言中的全局变量和静态变量;块数据段.bss中存储未被明确初始化的全局数据;只读数据段.rodata存储程序中的只读数据,比如字符串常量、全局const变量等。具体设计时,模拟内存中设置的各个段至少包括:代码段.text、数据段.data和块数据段.bss;具体设置时,可以如图2所示的在模拟内存的最顶部开始自由合理安排各个段。
另外,需要说明的是,步骤S104在步骤S101之后执行,其与步骤S102和步骤S103之间没有严格的时序关系。
现有技术中,PMON源代码中的内存配置等部分是用汇编语言编写的,在通过内存配置部分进行内存初始化后,才可以执行C语言程序,因此开发人员在进行开发测试时,需要采用汇编语言来读取或改写内存配置等代码部分;而相比C语言,采用汇编语言编写的程序可读性差、且不便于维护,因此开发人员在读取或改写内存配置时,需要耗费大量精力,这很不利于开发人员的开发测试工作。而本实施例提供的构建运行环境的方法,通过对cache加锁构造了一个临时的模拟内存空间,再在模拟内存中设置堆指针、栈指针以及各个段,即构建出了C语言运行环境;该C语言运行环境所需的内存空间采用加锁的cache构造,无需进行内存初始化来分配,因此,开发人员无需使用汇编语言来编写内存配置,而可以直接采用C语言来编写内存配置,从而使得编写的内存配置程序可读性高,且便于维护,进而在进行后期开发测试时,可以有效的节约人力资源,方便开发人员的开发测试。此外,本实施例中构建运行环境的方法也可以应用于BOOT中,使BOOT更加的精简,这样就可以在某些特定的场合不需要进行繁琐的内存初始化就可以放心的执行C语言程序,从而在进行测试等工作时,可直接在精简的BOOT平台中运行测试内容,避免了操作系统等其他加载项对测试的影响,提高了测试结果的精确度。
本实施例提供的构建运行环境的方法,通过对cache加锁构造了一个临时的模拟内存空间,再在模拟内存中设置堆指针、栈指针以及各个段,即构建出了C语言运行环境,使得开发人员无需使用汇编语言来编写内存配置,而可以直接采用C语言来编写内存配置,从而程序可读性高,且便于维护,进而方便了开发人员的开发测试。
上述图1所示实施例所提供的方法,在构建的C语言运行环境中编程时,可以通过人为的控制来使用模拟内存空间,使得程序所使用的堆空间和栈空间的总和不超过模拟内存的大小。该方法可以满足大多数的使用需求,但是当需要大量使用这些模拟内存空间时,则容易出现堆栈溢出的错误;程序运行过程中出现的错误不仅包括堆栈溢出错误,还可能包括其他异常错误,如非法访问异常,而程序无法捕捉是堆栈溢出错误还是其他错误,这就给开发人员的开发测试工作带来了不便,因此有必要使用某些方法来解决该问题。下面详细说明本发明解决该问题所采用的方案。
图3为本发明提供的构建运行环境的方法实施例二的流程示意图,本实施例是对上述图1所示实施例所提供的方法的进一步优化。在上述图1所示实施例的基础上,如图3所示,本实施例提供的方法还包括:
步骤S105、在模拟内存中设置堆空间和栈空间。
具体的,在模拟内存中设置堆空间和栈空间可以明确确定堆栈边界,以便于判断堆栈越界;在具体设置时,可以自由设置堆空间和栈空间的大小和位置。由于栈是向低地址扩展的数据结构,堆是向高地址扩展的数据结构,因此,优选的,栈空间对应的虚拟地址高于堆空间对应的虚拟地址,在充分利用内存空间的同时,以便于控制堆栈越界情况;另外,通常情况下,堆空间的使用需求大于栈空间的使用需求,因此,优选的,堆空间与栈空间的比例为3:1,以尽量减少出现堆栈越界的情况。
步骤S106、将栈空间对应的虚拟地址更改为需要经过TLB映射的虚拟地址。
具体的,对于相同的物理地址,对应的经cache映射的虚拟地址和经旁路转换缓冲(Translation Lookaside Buffer,TLB)映射的虚拟地址不同,本实施例中,将栈空间对应的虚拟地址更改为需要经过TLB映射的虚拟地址,以便于后续为栈空间设置TLB表项。在具体更改时,与步骤S102类似,可以通过MIPS处理器预先设置好的转换表来将栈空间对应的虚拟地址更改为需要经过TLB映射的虚拟地址。
图4为本发明提供的模拟内存的另一种结构示意图,如图4所示,本实施例中,将图2中栈空间对应的虚拟地址0x9fc40000到0x9fc5fff8修改为需要经过TLB映射的虚拟地址0xdfc40000到0xdfc5fff8。
步骤S107、根据栈空间的大小计算出映射到栈空间所需的TLB表项的数量,并根据栈空间对应的需要经过TLB映射的虚拟地址填写TLB表项。
具体的,TLB实现虚拟地址到物理地址的转换,TLB中页的大小可以是4KB到16MB,不同的页大小设置方式对应不同的TLB表项数量,根据栈空间的大小可以确定页的数量,进而可以确定TLB表项的数量。TLB表项中存储的是虚拟地址到物理地址的映射关系,根据更改后的栈空间对应的虚拟地址,再结合其对应的物理地址,即可确定TLB表项的内容;通过TLB指令可以将各TLB表项的内容填写入TLB表项中,例如:MIPS处理器指令中的TLBWI用于写索引的TLB表项,TLBWR用于写随机的TLB表项,在填写时可采用上述TLB指令实现。
步骤S108、根据栈空间对应的需要经过TLB映射的虚拟地址重设栈指针。
具体的,将栈指针设置为更改后的栈空间对应的虚拟地址,在模拟内存中读写数据时,处理器则会使用上述经过TLB映射的虚拟地址来访问栈空间,此时如果堆栈越界(即堆栈溢出)的话,就会发生TLB异常(即TLB失效);在PMON中都固定设置有异常向量表,当发生TLB异常时,程序则会自动跳转到异常向量表,根据该向量表可以获知程序异常为TLB异常,也即程序可以捕捉到堆栈溢出的错误,从而开发人员可以明确的确定程序错误是堆栈溢出错误还是其他异常错误,这给开发人员的开发测试工作带来了很大的便利。
继续以图4为例,优选的,可以将SP指向模拟内存的最底部对应的更改后的虚拟地址,即0xbfc5fff8。
需要说明的是,步骤S108可以在步骤S107之后执行,也可以在步骤S107之前执行,还可以与步骤S107同时执行,两者之间没有严格的时序关系。
本实施例提供的构建运行环境的方法,利用TLB地址映射的机制,对于模拟内存中的栈空间设置对应的TLB表项,使得处理器使用必须经过TLB映射的虚拟地址来访问栈空间,从而可以有效的控制和捕捉堆栈溢出,方便开发人员的开发测试工作。
图5为本发明提供的构建运行环境的装置实施例一的结构示意图,如图5所示,本实施例提供的装置包括:锁cache模块10、获取模块20和设置模块30,其中:
锁cache模块10,用于对cache加锁,将加锁后的cache作为模拟内存;
获取模块20,用于根据模拟内存的物理地址获取对应的虚拟地址;
设置模块30,用于根据虚拟地址在模拟内存中设置堆指针和栈指针;
设置模块30,还用于根据可执行与可链接格式ELF文件结构在模拟内存中设置用于堆指针寻址的各个段。
本实施例提供的装置可以集成在处理器中,上述功能模块可以以程序或指令的方式存储在存储器中,当处理器调用存储器中的程序或指令时,可以实现上述功能。
本实施例提供的装置可以执行上述图1所示的方法实施例,其实现原理和技术效果类似,此处不再赘述。
图6为本发明提供的构建运行环境的装置实施例二的结构示意图,本实施例是对上述图5所示实施例中装置功能的进一步优化;在上述图5所示实施例的基础上,如图6所示,本实施例提供的装置还包括:更改模块40和TLB处理模块50;其中:
设置模块30,还用于在模拟内存中设置堆空间和栈空间;
更改模块40,用于将栈空间对应的虚拟地址更改为需要经过TLB映射的虚拟地址;
TLB处理模块50,用于根据栈空间的大小计算出映射到栈空间所需的TLB表项的数量,并根据栈空间对应的需要经过TLB映射的虚拟地址填写TLB表项;
设置模块30,还用于根据栈空间对应的需要经过TLB映射的虚拟地址重设栈指针。
作为本发明一种可选的实施方式,栈空间对应的虚拟地址高于堆空间对应的虚拟地址。
进一步的,在根据虚拟地址在模拟内存中设置堆指针和栈指针方面,设置模块30具体用于:
设置堆指针指向模拟内存的最顶部对应的虚拟地址;
设置栈指针指向模拟内存的最底部对应的虚拟地址。
作为本发明另一种可选的实施方式,堆空间与栈空间的比例为3:1。
作为本发明又一种可选的实施方式,模拟内存中设置的各个段至少包括:代码段、数据段和块数据段。
本实施例提供的装置可以执行上述图3所示的方法实施例,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (12)

1.一种构建运行环境的方法,其特征在于,包括:
对缓存cache进行加锁,将加锁后的cache作为模拟内存;
根据所述模拟内存的物理地址获取对应的虚拟地址;
根据所述虚拟地址在所述模拟内存中设置堆指针和栈指针;
根据可执行与可链接格式ELF文件结构在所述模拟内存中设置用于所述堆指针寻址的各个段。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述模拟内存中设置堆空间和栈空间;
将所述栈空间对应的虚拟地址更改为需要经过旁路转换缓冲TLB映射的虚拟地址;
根据所述栈空间的大小计算出映射到所述栈空间所需的TLB表项的数量,并根据所述栈空间对应的需要经过TLB映射的虚拟地址填写所述TLB表项;
根据所述栈空间对应的需要经过TLB映射的虚拟地址重设所述栈指针。
3.根据权利要求2所述的方法,其特征在于,所述栈空间对应的虚拟地址高于所述堆空间对应的虚拟地址。
4.根据权利要求3所述的方法,其特征在于,所述根据所述虚拟地址在所述模拟内存中设置堆指针和栈指针,包括:
设置所述堆指针指向所述模拟内存的最顶部对应的虚拟地址;
设置所述栈指针指向所述模拟内存的最底部对应的虚拟地址。
5.根据权利要求2所述的方法,其特征在于,所述堆空间与所述栈空间的比例为3:1。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述模拟内存中设置的各个段至少包括:代码段、数据段和块数据段。
7.一种构建运行环境的装置,其特征在于,包括:
锁缓存cache模块,用于对cache加锁,将加锁后的cache作为模拟内存;
获取模块,用于根据所述模拟内存的物理地址获取对应的虚拟地址;
设置模块,用于根据所述虚拟地址在所述模拟内存中设置堆指针和栈指针;
所述设置模块,还用于根据可执行与可链接格式ELF文件结构在所述模拟内存中设置用于所述堆指针寻址的各个段。
8.根据权利要求7所述的装置,其特征在于,还包括:更改模块和旁路转换缓冲TLB处理模块;
所述设置模块,还用于在所述模拟内存中设置堆空间和栈空间;
所述更改模块,用于将所述栈空间对应的虚拟地址更改为需要经过TLB映射的虚拟地址;
所述TLB处理模块,用于根据所述栈空间的大小计算出映射到所述栈空间所需的TLB表项的数量,并根据所述栈空间对应的需要经过TLB映射的虚拟地址填写所述TLB表项;
所述设置模块,还用于根据所述栈空间对应的需要经过TLB映射的虚拟地址重设所述栈指针。
9.根据权利要求8所述的装置,其特征在于,所述栈空间对应的虚拟地址高于所述堆空间对应的虚拟地址。
10.根据权利要求9所述的装置,其特征在于,在根据所述虚拟地址在所述模拟内存中设置堆指针和栈指针方面,所述设置模块具体用于:
设置所述堆指针指向所述模拟内存的最顶部对应的虚拟地址;
设置所述栈指针指向所述模拟内存的最底部对应的虚拟地址。
11.根据权利要求8所述的装置,其特征在于,所述堆空间与所述栈空间的比例为3:1。
12.根据权利要求7-11任一项所述的装置,其特征在于,所述模拟内存中设置的各个段至少包括:代码段、数据段和块数据段。
CN201610202997.8A 2016-03-31 2016-03-31 构建运行环境的方法和装置 Active CN107291423B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610202997.8A CN107291423B (zh) 2016-03-31 2016-03-31 构建运行环境的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610202997.8A CN107291423B (zh) 2016-03-31 2016-03-31 构建运行环境的方法和装置

Publications (2)

Publication Number Publication Date
CN107291423A true CN107291423A (zh) 2017-10-24
CN107291423B CN107291423B (zh) 2020-09-29

Family

ID=60088267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610202997.8A Active CN107291423B (zh) 2016-03-31 2016-03-31 构建运行环境的方法和装置

Country Status (1)

Country Link
CN (1) CN107291423B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672984A (zh) * 2021-08-25 2021-11-19 武汉天喻信息产业股份有限公司 基于文件结构设计的链接方法及可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926631A (en) * 1997-08-15 1999-07-20 International Business Machines Corporation Network computer emulator systems, methods and computer program products for personal computers
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
CN1916853A (zh) * 2006-09-18 2007-02-21 华为技术有限公司 用于mips系统的代码段保护方法和装置
CN101436966A (zh) * 2008-12-23 2009-05-20 北京航空航天大学 虚拟机环境下的网络监控与分析系统
CN101770551A (zh) * 2008-12-30 2010-07-07 中国科学院软件研究所 一种基于硬件模拟器的处理隐藏进程的方法
CN102804151A (zh) * 2009-06-29 2012-11-28 惠普开发有限公司 访问作为缓存一致性域的部分的内存刀片的内存代理
CN104620219A (zh) * 2012-08-31 2015-05-13 优米有限公司 具有堆外缓存的网络服务系统和方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926631A (en) * 1997-08-15 1999-07-20 International Business Machines Corporation Network computer emulator systems, methods and computer program products for personal computers
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
CN1916853A (zh) * 2006-09-18 2007-02-21 华为技术有限公司 用于mips系统的代码段保护方法和装置
CN101436966A (zh) * 2008-12-23 2009-05-20 北京航空航天大学 虚拟机环境下的网络监控与分析系统
CN101770551A (zh) * 2008-12-30 2010-07-07 中国科学院软件研究所 一种基于硬件模拟器的处理隐藏进程的方法
CN102804151A (zh) * 2009-06-29 2012-11-28 惠普开发有限公司 访问作为缓存一致性域的部分的内存刀片的内存代理
CN104620219A (zh) * 2012-08-31 2015-05-13 优米有限公司 具有堆外缓存的网络服务系统和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672984A (zh) * 2021-08-25 2021-11-19 武汉天喻信息产业股份有限公司 基于文件结构设计的链接方法及可读存储介质

Also Published As

Publication number Publication date
CN107291423B (zh) 2020-09-29

Similar Documents

Publication Publication Date Title
US10139876B2 (en) Efficient reboot of an operating system executed in a virtual machine
CN109478135B (zh) 计算机系统和用于重新引导计算机系统的方法
US6009261A (en) Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US20120084754A1 (en) Streamlining Unit Testing Through Hot Code Swapping
US20050097399A1 (en) Techniques for managed code debugging
CN110502281A (zh) 一种嵌入式设备启动Linux内核和文件系统的方法
CN105446841A (zh) 缓存一致性测试方法
US10534732B2 (en) Exposing memory-mapped IO devices to drivers by emulating PCI bus and PCI device configuration space
TWI502495B (zh) 以機器指令取代編譯器內建輔助函數之方法、裝置及電腦程式產品
CN112130930A (zh) 镜像系统生成方法、装置、设备及介质
US20100280817A1 (en) Direct pointer access and xip redirector for emulation of memory-mapped devices
CN101364253A (zh) 反恶意程序隐蔽调试引擎与方法
US9069900B2 (en) Method for determining whether a machine code instruction of a machine code program is executed in the machine code program
CN107291423A (zh) 构建运行环境的方法和装置
US20230236959A1 (en) Controlled input/output in progress state during testcase processing
CN109857522B (zh) 一种面向kvm的虚拟化层故障注入方法
US20130173887A1 (en) Processor simulation environment
US11860748B2 (en) Memory test method, memory test apparatus, device and storage medium
Faravelon et al. Optimizing memory access performance using hardware assisted virtualization in retargetable dynamic binary translation
CN115185638A (zh) 一种仿真运行应用程序时获取调用栈的方法及计算设备
US20020184352A1 (en) Firmware common operations and reset environment
US8417508B2 (en) Multiprocessor development environment
CN114047952A (zh) 用于单片机的处理器、方法、单片机和存储介质
Jain et al. Scaling the UVM_REG model towards automation and simplicity of use
JP2013020425A (ja) オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.