aboutsummaryrefslogtreecommitdiffstats
path: root/test/expimp.asm
blob: 89e32a144d4492bf76f0c1f89fa10a110bde6540 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
;Testname=O0; Arguments=-O0 -fbin -oexpimp.bin; Files=stdout stderr expimp.bin
;Testname=O1; Arguments=-O1 -fbin -oexpimp.bin; Files=stdout stderr expimp.bin
;Testname=Ox; Arguments=-Ox -fbin -oexpimp.bin; Files=stdout stderr expimp.bin
;Testname=error-O0; Arguments=-O0 -fbin -oexpimp.bin -DERROR; Files=stdout stderr expimp.bin
;Testname=error-Ox; Arguments=-Ox -fbin -oexpimp.bin -DERROR; Files=stdout stderr expimp.bin

;
; Test of explicitly and implicitly sized operands
;
	BITS 32

	add esi,2			; Implicit
	add esi,123456h			; Implicit
	add esi,byte 2			; Explicit
	add esi,dword 2			; Explicit
	add esi,dword 123456h		; Explicit
	add esi,byte 123456h		; Explicit Truncation

	add esi,strict 2		; Implicit Strict
	add esi,strict 123456h		; Implicit Strict
	add esi,strict byte 2		; Explicit Strict
	add esi,strict dword 2		; Explicit Strict
	add esi,strict dword 123456h	; Explicit Strict
	add esi,strict byte 123456h	; Explicit Strict Truncation

	add eax,2			; Implicit
	add eax,123456h			; Implicit
	add eax,byte 2			; Explicit
	add eax,dword 2			; Explicit
	add eax,dword 123456h		; Explicit
	add eax,byte 123456h		; Explicit Truncation

	add eax,strict 2		; Implicit Strict
	add eax,strict 123456h		; Implicit Strict
	add eax,strict byte 2		; Explicit Strict
	add eax,strict dword 2		; Explicit Strict
	add eax,strict dword 123456h	; Explicit Strict
	add eax,strict byte 123456h	; Explicit Strict Truncation

	imul dx,3			; Implicit
	imul dx,byte 3			; Explicit
	imul dx,word 3			; Explicit
	imul dx,strict byte 3		; Explicit Strict
	imul dx,strict word 3		; Explicit Strict

;
; Same thing with branches
;
start:
	jmp short start			; Explicit
	jmp near start			; Explicit
	jmp word start			; Explicit
	jmp dword start			; Explicit
	jmp short forward		; Explicit
	jmp near forward		; Explicit
	jmp word forward		; Explicit
	jmp dword forward		; Explicit
%ifdef ERROR
	jmp short faraway		; Explicit (ERROR)
%endif
	jmp near faraway		; Explicit
	jmp word faraway		; Explicit
	jmp dword faraway		; Explicit
	jmp start			; Implicit
	jmp forward			; Implicit
	jmp faraway			; Implicit

	jmp strict short start		; Explicit Strict
	jmp strict near start		; Explicit Strict
	jmp strict word start		; Explicit Strict
	jmp strict dword start		; Explicit Strict
	jmp strict short forward	; Explicit Strict
	jmp strict near forward		; Explicit Strict
	jmp strict word forward		; Explicit Strict
	jmp strict dword forward	; Explicit Strict
%ifdef ERROR
	jmp strict short faraway	; Explicit (ERROR)
%endif
	jmp strict near faraway		; Explicit Strict
	jmp strict word faraway		; Explicit Strict
	jmp strict dword faraway	; Explicit Strict
	jmp strict start		; Implicit Strict
	jmp strict forward		; Implicit Strict
	jmp strict faraway		; Implicit Strict
forward:

	times 256 nop
faraway: