C 动态单链表
我正在尝试创建一个linkedlist,其中包含从用户输入在MIPS中动态分配的内存 我想知道是否有一个通常用于创建节点(C中的结构)的通用结构——例如,可能使其成为将在条件语句中调用的子进程 我要翻译的结构是:C 动态单链表,c,assembly,mips,C,Assembly,Mips,我正在尝试创建一个linkedlist,其中包含从用户输入在MIPS中动态分配的内存 我想知道是否有一个通常用于创建节点(C中的结构)的通用结构——例如,可能使其成为将在条件语句中调用的子进程 我要翻译的结构是: struct p { char name[256]; int phone; float rating; struct p *next; }; 结构的每个部分的输入都将由用户输入(这部分我知道如何做和存储),但我不确定如何在堆上分配寄存器值以动态完成这一
struct p {
char name[256];
int phone;
float rating;
struct p *next;
};
结构的每个部分的输入都将由用户输入(这部分我知道如何做和存储),但我不确定如何在堆上分配寄存器值以动态完成这一任务
最后,我将根据评级对这些值进行排序
谢谢你的帮助,谢谢 如果寄存器
$t9
包含结构p
实例的地址,则可以使用$t9
的偏移量访问结构的字段
加载name
dolw$t0,0($t9)
的第一个字符
要加载手机
do`lw$T0256($t9)
加载rating
dolwc1$f0260($t9)#256+sizeof(int)
要加载
next
dolw$t0264($t9)#256+sizeof(int)+sizeof(float)
如果register$t9
包含结构p
的实例地址,可以使用$t9
的偏移量访问结构的字段
加载name
dolw$t0,0($t9)
的第一个字符
要加载手机
do`lw$T0256($t9)
加载rating
dolwc1$f0260($t9)#256+sizeof(int)
要加载
next
dolw$t0264($t9)#256+sizeof(int)+sizeof(float)
如果register$t9
包含结构p
的实例地址,可以使用$t9
的偏移量访问结构的字段
加载name
dolw$t0,0($t9)
的第一个字符
要加载手机
do`lw$T0256($t9)
加载rating
dolwc1$f0260($t9)#256+sizeof(int)
要加载
next
dolw$t0264($t9)#256+sizeof(int)+sizeof(float)
如果register$t9
包含结构p
的实例地址,可以使用$t9
的偏移量访问结构的字段
加载name
dolw$t0,0($t9)
的第一个字符
要加载手机
do`lw$T0256($t9)
加载rating
dolwc1$f0260($t9)#256+sizeof(int)
要在链表中加载
next
dolw$t0264($t9)#256+sizeof(int)+sizeof(float)
,每个节点由两个项目组成:
1.数据
2.下一个节点的地址
为了分配足够的内存,必须找到所需的字节数。在这种情况下,数组字段需要256字节,int字段需要4字节,float字段需要8字节,下一个节点的地址需要4字节
如果要创建fist结构,可以执行以下操作:
addi $t0,$0,7
sw $t0,256($v0)
addi$v0$0,9
addi$a0,$0272
系统调用
现在你可以给结构赋值了
例如,如果要在电话字段中存储号码7,可以执行以下操作:
addi $t0,$0,7
sw $t0,256($v0)
在链表中,每个节点由两项组成: 1.数据 2.下一个节点的地址 为了分配足够的内存,必须找到所需的字节数。在这种情况下,数组字段需要256字节,int字段需要4字节,float字段需要8字节,下一个节点的地址需要4字节 如果要创建fist结构,可以执行以下操作:
addi $t0,$0,7
sw $t0,256($v0)
addi$v0$0,9
addi$a0,$0272
系统调用
现在你可以给结构赋值了
例如,如果要在电话字段中存储号码7,可以执行以下操作:
addi $t0,$0,7
sw $t0,256($v0)
在链表中,每个节点由两项组成: 1.数据 2.下一个节点的地址 为了分配足够的内存,必须找到所需的字节数。在这种情况下,数组字段需要256字节,int字段需要4字节,float字段需要8字节,下一个节点的地址需要4字节 如果要创建fist结构,可以执行以下操作:
addi $t0,$0,7
sw $t0,256($v0)
addi$v0$0,9
addi$a0,$0272
系统调用
现在你可以给结构赋值了
例如,如果要在电话字段中存储号码7,可以执行以下操作:
addi $t0,$0,7
sw $t0,256($v0)
在链表中,每个节点由两项组成: 1.数据 2.下一个节点的地址 为了分配足够的内存,必须找到所需的字节数。在这种情况下,数组字段需要256字节,int字段需要4字节,float字段需要8字节,下一个节点的地址需要4字节 如果要创建fist结构,可以执行以下操作:
addi $t0,$0,7
sw $t0,256($v0)
addi$v0$0,9
addi$a0,$0272
系统调用
现在你可以给结构赋值了
例如,如果要在电话字段中存储号码7,可以执行以下操作:
addi $t0,$0,7
sw $t0,256($v0)
站台是什么?动态内存分配是您通常要求操作系统执行的操作,而不是自己滚动。结构很简单-只需计算总大小并使用偏移量即可。我使用QtSpim执行,但无法计算总大小,因为用户可以输入随机数目的要计算的结构。我只是在练习堆/堆栈访问,对此我一窍不通。您需要使用syscall 9在Spim中分配堆内存。平台是什么?动态内存分配是您通常要求操作系统执行的操作,而不是自己滚动。结构很简单-只需计算总大小并使用偏移量即可。我使用QtSpim执行,并且可以