We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I am learning ARM assembly code. The following is a Thumb disassembly from a short .c file:
int main()
{
printf("Hardware test, finish testing.\n");
return 0;
}
00000000 <main>:
0: b580 push {r7, lr}
2: b08a sub sp, #40 ; 0x28
4: af00 add r7, sp, #0
6: f240 0000 movw r0, #0
a: f2c0 0000 movt r0, #0
e: f7ff fffe bl 0 <puts>
12: 2300 movs r3, #0
14: 4618 mov r0, r3
16: f107 0728 add.w r7, r7, #40 ; 0x28
1a: 46bd mov sp, r7
1c: bd80 pop {r7, pc}
1e: bf00 nop
I do not understand the '0' in line e: bl 0 <puts>, even after I look it up on BL instruction.
Could you tell me that? Thanks,
If you're using objdump, try -r or -R. They show you what kind of relocation is expected there.
Like
20: f7ff fffe bl 0 <serial_init>
20: R_ARM_THM_CALL serial_init