顺便留个作业
call $+5
pop ebx
sub ebx,$-1
这个 对吗? 自己想想啦
扩展阅读 Intel(R) 64 and IA-32 Architectures Software Developer’s Manual 有兴趣找来看看 看看call的机器码
CALL—Call Procedure
Opcode Instruction 64-Bit Compat/ Description
Mode Leg Mode
E8 cw CALL rel16 N.S. Valid Call near, relative, displacement
relative to next instruction.
E8 cd CALL rel32 Valid Valid Call near, relative, displacement
relative to next instruction. 32-bit
displacement sign extended to 64-bits
in 64-bit mode.
FF /2 CALL r/m16 N.E. Valid Call near, absolute indirect, address
given in r/m16.
FF /2 CALL r/m32 N.E. Valid Call near, absolute indirect, address
given in r/m32.
FF /2 CALL r/m64 Valid N.E. Call near, absolute indirect, address
given in r/m64.
9A cd CALL Invalid Valid Call far, absolute, address given in
ptr16:16 operand.
9A cp CALL Invalid Valid Call far, absolute, address given in
ptr16:32 operand.
FF /3 CALL m16:16 Valid Valid Call far, absolute indirect address given
in m16:16.
In 32-bit mode: if selector points to a
gate, then RIP = 32-bit zero extended
displacement taken from gate; else RIP
= zero extended 16-bit offset from far
pointer referenced in the instruction.
FF /3 CALL m16:32 Valid Valid In 64-bit mode: If selector points to a
gate, then RIP = 64-bit displacement
taken from gate; else RIP = zero
extended 32-bit offset from far
pointer referenced in the instruction.
REX.W + FF /3 CALL m16:64 Valid N.E. In 64-bit mode: If selector points to a
gate, then RIP = 64-bit displacement
taken from gate; else RIP = 64-bit
offset from far pointer referenced in
the instruction.
呵呵 解答完毕