.global main, Stop, CodeEnd .global DataStart, DataEnd .text main: movw r0, #:lower16:k movt r0, #:upper16:k // r0 = addr of var k push {r0} // Pass the addr of var k bl f add sp, sp, #4 Stop: CodeEnd: nop f: push {lr} push {fp} mov fp, sp sub sp, sp, #0 // x = x + 1 ldr r0, [fp, #8] // r0 = addr of the var x that I need to read ldr r0, [r0] // r0 = value of the var x add r0, r0, #1 ldr r1, [fp, #8] // r1 = address of var x that I need to update str r0, [r1] mov sp, fp pop {fp} pop {pc} /* -------------------------------------------------- Begin of the permanent program variables -------------------------------------------------- */ .data DataStart: k: .4byte 7 DataEnd: .end