Oye, yo pensé que estaba entendiendo y luego vi esto:
.equ opts_quantity, 3
.thumb
.align 2
main:
mov r2, #0
ldr r0, selected_option_func
ldr r0, [r0]
mov r3, pc
add r3, r3, #(menu_options_array - pc_value)
pc_value:
loop:
ldr r1, [r3]
cmp r1, r0
beq return_0
add r2, r2, #1
add r3, r3, #4
cmp r2, #opts_quantity
bne loop
mov r0, #1
b return
return_0:
mov r0, #0
return:
bx lr
.align 2
selected_option_func:
.word 0x020370f0
menu_options_array:
.word 0x0806f4e9 @ Save
.word 0x0806f541 @ Exit
.word 0x0806f555 @ Retire
cómo es que restas una label a un array? (donde dice add r3, r3, #(menu_options_array - pc_value)) Y es así como se definen arrays?