Can anybody give me some information about indirect function calls in x86 assembly, i.e. instructions like
call *Reg
So where the address of the function label is stored in a register. Somehow I couldn't find information about it via google.
And furthermore, what does it mean if I get a Trace/breakpoint exception when running an x86 assembly program which has such an instruction?
Intel and AMD publish very good documentation regarding x86. Here's a link to Intels instruction set reference which (of course) has a section on CALL. http://www.intel.com/design/intarch/manuals/243191.HTM
OP Code: FF /2
Instruction: CALL r/m32
Description: Call near, absolute indirect, address given in r/m32
Using NASM syntax
lbl_start:
MOV EAX, lbl_function1
CALL EAX
RETN
lbl_function1:
MOV EAX, 1
RET 0
If you're getting an exception it could mean almost anything. Here's a few common issues...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With