如何在MIPS汇编中手动管理堆内存,特别是SPIM模拟器?
当使用sbrk系统调用时,我发现堆从0x10040000开始,例如: li $t0, 1 li $s0, 9
syscall
sw $t0, ($s0) # 1位于0x10040000处
那么,调用sbrk是否不能保证您会得到下一个可用的内存空间?例如,如果我为单个4字节空间调用sbrk,则SPIM可能分配地址:0x10040000-0x10040003。然而,对另一个4字节空间的第二次调用可能与先前的4字节分配无关?因此,需要数据结构来跟踪已分配的内存空间?最后,内存管理器是否通过确定特定数据结构跟踪的地址之间的空闲空间来减少对sbrk的调用次数?
当使用sbrk系统调用时,我发现堆从0x10040000开始,例如: li $t0, 1 li $s0, 9
syscall
sw $t0, ($s0) # 1位于0x10040000处
那么,调用sbrk是否不能保证您会得到下一个可用的内存空间?例如,如果我为单个4字节空间调用sbrk,则SPIM可能分配地址:0x10040000-0x10040003。然而,对另一个4字节空间的第二次调用可能与先前的4字节分配无关?因此,需要数据结构来跟踪已分配的内存空间?最后,内存管理器是否通过确定特定数据结构跟踪的地址之间的空闲空间来减少对sbrk的调用次数?