HI,
I executed two assembly programs on bf609 with uclinux loaded. I attached the code for both the programs. when I debugged both the codes I observed that the address of p0 in both the programs was located at p3+0x1c. I tried running many programs but this address remained the same. I went through toolchain:application_binary_interface [Analog Devices Open Source| Mixed-signal and Digital Signal Processing ICs] to understand this but din't clearly understand how this 1c is loaded by GOT17M4 in p0=[p3+inp@GOT17M4]. What is this GOT17M4 exactly doing. I attached the screen shots of the disassembly. Please go through.
Program1:
.section .data.l1 .align 4 inp: .byte4 0x12345678, 0xabcd5643, 0xccdd6688; out: .byte4 0, 0, 0; .section .text .global _main; _main: p0=[p3+inp@got17m4]; p1=[p3+out@got17m4]; p5=3; LOOP adi LC0=p5; LOOP_BEGIN adi r0=[p0]; r1=r0.l(z); [p1]=r1; p0+=4; p1+=4; LOOP_END adi; nop; p0=[p3+inp@got17m4]; p1=[p3+out@got17m4]; nop; _main.end:
Program2:
.section .data.l1 .align 4 input: .byte4 0, 0; .align 2 output: .byte2 0xa123, 0x2121; .section .text .global _main; _main: nop; p0=[p3+input@got17m4]; p1=[p3+output@got17m4]; p5=2; nop; LOOP abc LC0=p5; LOOP_BEGIN abc; nop; r0.l=w[p1]; r1=r0.l(x); [p0]=r1; p0+=4; p1+=2; nop; LOOP_END abc; nop; p0=[p3+input@got17m4] p1=[p3+output@got17m4]; nop; _main.end: