This is the source of confusion: movl (%edx), %eax This treats the value of %eax as an address, goes to it and copies its content to %eax,
Keeping that in mind then looking at: jmp *(%edx) Since parenthesis was used earlier (as dereferencing in the mov instruction), then is the asterisk a form of double dereference ?
...and how would this instruction perform differently ? --> jmp (%edx)
...or what about jmp *%edx versus jmp %edx ?