ASM Pointers

Started by Igglyboo, January 08, 2009, 03:11:13 AM

Previous topic - Next topic

Igglyboo

I made this ASM code but i don't know why its crashing, it is probably very inefficient but here is what I am trying to do.
I am basically trying to take  a value from the pointer [[[[[80623320]+4]+60]+18]+C] and [[[[[80623320]+4]+60]+18]+10] and write them to 80523000 and 80523004, respectively.

lis r21, 0x8052
li r21, 0x3000
lis r22, 0x8052
li r22, 0x3004
lis r3, 0x8062
li r3, 0x3320
lwz r3, 0x4(r3)
lwz r3, 0x60(r3)
lwz r3, 0x18(r3)
lwz r3, 0xC(r3)
stw r12,0x0(r3)
lis r4, 0x8062
li r4, 0x3320
lwz r4, 0x4(r3)
lwz r4, 0x60(r3)
lwz r4, 0x18(r3)
lwz r4, 0x10(r3)
stw r13,0x0(r3)
lwz r5, 0(r12)
lwz r6, 0(r13)
stw r21, 0(r12)
stw r22, 0(r13)

Almas

Quotelis r21, 0x8052
li r21, 0x3000
lis r22, 0x8052
li r22, 0x3004
lis r3, 0x8062
li r3, 0x3320
lwz r3, 0x4(r3)
lwz r3, 0x60(r3)
lwz r3, 0x18(r3)
lwz r3, 0xC(r3)
stw r12,0x0(r3)
lis r4, 0x8062
li r4, 0x3320
lwz r4, 0x4(r3)
lwz r4, 0x60(r3)
lwz r4, 0x18(r3)
lwz r4, 0x10(r3)
stw r13,0x0(r3)
lwz r5, 0(r12)
lwz r6, 0(r13)
stw r21, 0(r12)
stw r22, 0(r13)

Should be addi? Another li overwrites the current register with the new value.

Romaap

you could use addi, but ori is more efficient (brkirch said that in another thread :P)