You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.4 KiB
79 lines
1.4 KiB
; Copyright 2002-2019 Intel Corporation.
|
|
;
|
|
; This software is provided to you as Sample Source Code as defined in the accompanying
|
|
; End User License Agreement for the Intel(R) Software Development Products ("Agreement")
|
|
; section 1.L.
|
|
;
|
|
; This software and the related documents are provided as is, with no express or implied
|
|
; warranties, other than those that are expressly stated in the License.
|
|
|
|
.686
|
|
.model flat, c
|
|
|
|
COMMENT // contains important code patterns
|
|
COMMENT // doesn't actually do anything
|
|
COMMENT // make sure the relocated entry will copy more than one basic block.
|
|
|
|
ASSUME NOTHING
|
|
.code
|
|
PUBLIC do_nothing
|
|
do_nothing PROC
|
|
|
|
test eax, eax
|
|
je lab1
|
|
|
|
xor eax, eax
|
|
xor eax, eax
|
|
|
|
lab1:
|
|
xor eax, eax
|
|
xor eax, eax
|
|
|
|
ret
|
|
do_nothing ENDP
|
|
|
|
COMMENT // make sure the relocated entry will correctly handle a jump as the last
|
|
COMMENT // instruction in the basic block.
|
|
|
|
PUBLIC nothing_doing
|
|
nothing_doing PROC
|
|
test eax, eax
|
|
test eax, eax
|
|
je lab2
|
|
|
|
xor eax, eax
|
|
xor eax, eax
|
|
|
|
lab2:
|
|
xor eax, eax
|
|
xor eax, eax
|
|
|
|
ret
|
|
nothing_doing ENDP
|
|
|
|
COMMENT // call should be replaced with a push/jmp when relocated.
|
|
|
|
PUBLIC call_function
|
|
call_function PROC
|
|
|
|
push ebx
|
|
call do_nothing
|
|
pop ebx
|
|
ret
|
|
call_function ENDP
|
|
|
|
COMMENT // make sure this code pattern works
|
|
|
|
PUBLIC call_nothing
|
|
call_nothing PROC
|
|
push eax
|
|
mov eax, eax
|
|
push ebx
|
|
call do_nothing
|
|
pop ebx
|
|
pop eax
|
|
ret
|
|
call_nothing ENDP
|
|
|
|
END
|