pointers and LL Flashcards

(7 cards)

1
Q

how do we get a pointer/adress in assembly?

A

lea R5, x[R0] ; R5 := &x
store R5, p[R5] p := &x

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

how do we get what follows p/given variable in sigma 16?

A

load R7, p[R0] ; R7 := p
load R8, 0[R7] ; R8 := *p

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

traverse LL in high level

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

translate to low level

A

sum := 0
Loop
if not (p /= nil && end) goto Done
x := (p).value;
sum := sum + x;
p := (
p).next;
goto loop
Done
Halt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Translate to assembly

sum := 0
Loop
if not (p /= nil && end) goto Done
x := (p).value;
sum := sum + x;
p := (
p).next;
goto loop
Done
Halt

A

; sum = R5
Loop
load R1, p[R0] ; R1 := p
cmp R1,R0 ;compare p and 0
jumpeq Done[R0] ; p == 0 goto Done
load R2, 0[R1] ; R2 := *p.value
store R2, X[R0] ; x = *p.value
Add R5, R5, R2
load R2, 1[R1] ; R2 := *p.next
jump Loop[R0] ; goto Loop
Done
Trap R0,R0,R0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Get value in node that p points at: x := *p.value

A

load R1,p[R0] ;R1 := p
load R2,0[R1] ; R2 := *p.value
store R2,x[R0] ; x := *p.value

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Get pointer to next node in a list: q := *p.next

A

load R1,p[R0] ; R1 := p
load R2,1[R1] ; R2 := *p.next
store R2,y[R0] ; y := *p.next

How well did you know this?
1
Not at all
2
3
4
5
Perfectly