STR.W R0, [R2,R3,LSL#2]; Stores R0 to the address in R2, plus the value in R3 logically-shifted-left by 2;i.e. it's implementing something like: stack->gstate[stack->index] = gstateTemp;The shift-left by two is equivalent to mutiply by four, which is the sizeof int.It converts an index into a byte offset for an array made up of four byte elements.hths.