I've disassembled a function and I'm certain that I know what the function is doing - it's two nested loops that generates multiplication tables. However, there's a section of the assembly that doesn't make sense to me.
0x0000000000000035 <+53>: lea 0x0(%rip),%rdi # 0x3c <main+60>
0x000000000000003c <+60>: callq 0x41 <main+65>
0x0000000000000041 <+65>: lea 0x0(%rip),%rsi # 0x48 <main+72>
0x0000000000000048 <+72>: mov %rax,%rdi
0x000000000000004b <+75>: callq 0x50 <main+80>
0x0000000000000050 <+80>: mov %rax,%rdx
Are the callq
instructions just calling the next instruction, which would have just been called anyway? It also seems like the rdi
register is being set to the next instruction but is then overwritten by rax
before anything is done with it.
Is this a common pattern of calls that I should be able to recognize?