# create the first node
li $v0,9 # allocate memory
li $a0,8 # 8 bytes
syscall # $v0 <-- address
move $s1,$v0 # $s1 = &(first node)
# copy the pointer to first
sw $s1,first
# initialize the node
li $t0,1 # store 1
sw $t0,0($s1) # at displacement 0
# create the second node
. . . .
.data
first: .word 0 # address of the first node
Now let us build a linked list with three nodes. This will be done with an eye to generalizing the procedure to build lists with any number of nodes. The picture shows this.
Register $s1
will be used to point to each node as it is being built.
Why do we want to use $s1 for all nodes?
Why not use a different pointer register for each node of the linked list?