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
|
main:
;; MUL
MOV RCX, 0x20000002
MOV RAX, 0x1122334455667788
MOV RDX, RAX
MOV RAX, 0x1122334400000020
MUL ECX
CMP RAX, 0x40
JNZ bad
CMP RDX, 0x4
JNZ bad
;; IMUL
MOV RCX, 0xFFFFFFF2
MOV RAX, 0x1122334455667788
MOV RDX, RAX
MOV RAX, 0x1122334400000020
IMUL ECX
MOV ESI, 0xFFFFFE40
CMP RAX, RSI
JNZ bad
MOV ESI 0xFFFFFFFF
CMP RDX, RSI
JNZ bad
;; DIV
MOV RAX, 0x1122334400000002
MOV RCX, RAX
MOV RAX, 0x1122334400000000
MOV RDX, RAX
MOV RAX, 0x1122334440000003
DIV ECX
CMP RAX, 0x20000001
JNZ bad
CMP RDX, 0x1
JNZ bad
;; IDIV
MOV RAX, 0x11223344FFFFFFF2
MOV RCX, RAX
MOV RAX, 0x11223344FFFFFFFF
MOV RDX, RAX
MOV RAX, 0x11223344FFFFFFF2
IDIV ECX
CMP RAX, 0x1
JNZ bad
CMP RDX, 0x0
JNZ bad
RET
bad:
INT 0x3
|