I have a question about putting data (address table or other data) in the .text section under its function or put in .data section? For example, I have a function like this :
extern int i0(); extern int i1(); extern int i2(); extern int i3(); extern int i4(); extern int i5(); void fff(int x) { switch (x) { case 0: i0(); break; case 1: i1(); break; case 2: i2(); break; case 3: i3(); break; case 4: i4(); break; case 5: i5(); break; } } here in assembly, this is my code:
fff: cmp edi, 5 ja .L10 mov edi, edi xor eax, eax jmp [QWORD PTR .L4[0+rdi*8]] .L4: .quad .L9 .quad .L8 .quad .L7 .quad .L6 .quad .L5 .quad .L3 .L5: jmp i4 .L3: jmp i5 .L9: jmp i0 .L8: jmp i1 .L7: jmp i2 .L6: jmp i3 .L10: ret Here I have .L4 which holds the jump addresses ... where should I put this .L4 table ? Under the fff function or I have to put it in the .data section ? What about static data ? For example, I have 2 QWORD for a function, I must put it in that function, or I must put those QWORDs in the data section ? Why ? I know that there will be no problem if I put it in .data section or under its function, but I want to know which way is better?