; Meaningless program that makes a few hops and then exits
.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
.DATA
jump_anywhere DWORD ?
.CODE
_start:
mov eax, offset label_three ; prepare address
jmp eax ; register indirect jump
;
label_one:
jmp quit_program ; unconditional relative jump
;
label_two:
mov eax, offset label_one
mov jump_anywhere, eax
jmp jump_anywhere ; memory indirect jump
;
label_three:
mov edi, offset jump_anywhere
mov eax, offset label_two
mov jump_anywhere, eax
jmp dword ptr [edi] ; jump via pointer to a variable that contains an address
;
quit_program:
INVOKE ExitProcess, 0 ; exit with return code 0
PUBLIC _start ; make entry point public
END ; end of source code