Implements the rest of the TwoByte table unit tests

This commit is contained in:
Ryan Houdek committed 2020-03-08 22:07:59 -07:00
1 parent e1c7c9c0f3
commit 8e5fe4ba76
36 files changed
+1645

No files matched your search

+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x80000000
mov r11, 0x1
mov r12, 0x2
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jo .tgt_1
jno .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x1
mov r11, 0x0
mov r12, 0x2
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jno .tgt_1
jo .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x1
mov r11, 0x0
mov r12, 0x2
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jc .tgt_1
jnc .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x2
mov r11, 0x0
mov r12, 0x1
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jnc .tgt_1
jc .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x1
mov r11, 0x0
mov r12, 0x1
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jz .tgt_1
jnz .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x2
mov r11, 0x0
mov r12, 0x1
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jnz .tgt_1
jz .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x2
mov r11, 0x0
mov r12, 0x2
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jbe .tgt_1
jnbe .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x2
mov r11, 0x0
mov r12, 0x1
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jnbe .tgt_1
jbe .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x1
mov r11, 0x0
mov r12, 0x2
cmp r10d, r12d
mov rax, 0
mov rbx, 0
js .tgt_1
jns .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x1
mov r11, 0x0
mov r12, 0x1
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jns .tgt_1
js .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x4
mov r11, 0x0
mov r12, 0x1
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jp .tgt_1
jnp .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x3
mov r11, 0x0
mov r12, 0x1
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jnp .tgt_1
jp .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x1
mov r11, 0x0
mov r12, 0x2
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jl .tgt_1
jnl .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x2
mov r11, 0x0
mov r12, 0x2
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jnl .tgt_1
jl .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x1
mov r11, 0x0
mov r12, 0x2
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jle .tgt_1
jnle .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1",
"RBX": "0x0"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov r10, 0x2
mov r11, 0x0
mov r12, 0x1
cmp r10d, r12d
mov rax, 0
mov rbx, 0
jnle .tgt_1
jle .tgt_2
jmp .end
.tgt_1:
mov rax, 1
jmp .end
.tgt_2:
mov rbx, 1
jmp .end
.end:
hlt
+22
View File
@@ -0,0 +1,22 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
; CPUID function zero
mov rax, 0
cpuid
; CPUID function zero always returns >0 in EAX
cmp eax, 0
mov rax, 0
setnz al
hlt
+49
View File
@@ -0,0 +1,49 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0x3"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
%macro cfmerge 0
; Get CF
sbb r14, r14
and r14, 1
; Merge in to results
shl r15, 1
or r15, r14
%endmacro
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFF80000000
mov [rdx + 8 * 0], rax
mov [rdx + 8 * 1], rax
mov [rdx + 8 * 2], rax
mov rax, 0x01
mov [rdx + 8 * 3], eax
mov rax, 0x0
mov [rdx + 8 * 3 + 4], eax
xor r15, r15 ; Will contain our results
mov r13, 1
bt word [rdx], r13w
cfmerge
mov r13, 32
bt dword [rdx], r13d
cfmerge
mov r13, 64 * 3
bt qword [rdx], r13
cfmerge
hlt
+58
View File
@@ -0,0 +1,58 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x4142434457584857",
"RBX": "0x6162636467687576",
"RCX": "0x8788919291929394",
"RDX": "0xA7A8919293949596",
"RSI": "0xB1B2B3B4B5B6B7B8"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x6162636465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
mov rax, 0x8182838485868788
mov [rdx + 8 * 4], rax
mov rax, 0x9192939495969798
mov [rdx + 8 * 5], rax
mov rax, 0xA1A2A3A4A5A6A7A8
mov [rdx + 8 * 6], rax
mov rax, 0xB1B2B3B4B5B6B7B8
mov [rdx + 8 * 7], rax
mov rax, [rdx + 8 * 1]
shld word [rdx + 8 * 0 + 0], ax, 8
shld word [rdx + 8 * 0 + 2], ax, 16
shld word [rdx + 8 * 0 + 4], ax, 32
mov rax, [rdx + 8 * 3]
shld dword [rdx + 8 * 2 + 0], eax, 16
shld dword [rdx + 8 * 2 + 4], eax, 32
mov rax, [rdx + 8 * 5]
shld qword [rdx + 8 * 4 + 0], rax, 16
shld qword [rdx + 8 * 4 + 0], rax, 32
shld qword [rdx + 8 * 6 + 0], rax, 48
shld qword [rdx + 8 * 7 + 0], rax, 64
mov rax, qword [rdx + 8 * 0]
mov rbx, qword [rdx + 8 * 2]
mov rcx, qword [rdx + 8 * 4]
mov rsi, qword [rdx + 8 * 7]
mov rdx, qword [rdx + 8 * 6]
hlt
+67
View File
@@ -0,0 +1,67 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x4142434457584857",
"RBX": "0x6162636467687576",
"RCX": "0x8788919291929394",
"RDX": "0xA7A8919293949596",
"RSI": "0xB1B2B3B4B5B6B7B8"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x6162636465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
mov rax, 0x8182838485868788
mov [rdx + 8 * 4], rax
mov rax, 0x9192939495969798
mov [rdx + 8 * 5], rax
mov rax, 0xA1A2A3A4A5A6A7A8
mov [rdx + 8 * 6], rax
mov rax, 0xB1B2B3B4B5B6B7B8
mov [rdx + 8 * 7], rax
mov rax, [rdx + 8 * 1]
mov cl, 8
shld word [rdx + 8 * 0 + 0], ax, cl
mov cl, 16
shld word [rdx + 8 * 0 + 2], ax, cl
mov cl, 32
shld word [rdx + 8 * 0 + 4], ax, cl
mov rax, [rdx + 8 * 3]
mov cl, 16
shld dword [rdx + 8 * 2 + 0], eax, cl
mov cl, 32
shld dword [rdx + 8 * 2 + 4], eax, cl
mov rax, [rdx + 8 * 5]
mov cl, 16
shld qword [rdx + 8 * 4 + 0], rax, cl
mov cl, 32
shld qword [rdx + 8 * 4 + 0], rax, cl
mov cl, 48
shld qword [rdx + 8 * 6 + 0], rax, cl
mov cl, 64
shld qword [rdx + 8 * 7 + 0], rax, cl
mov rax, qword [rdx + 8 * 0]
mov rbx, qword [rdx + 8 * 2]
mov rcx, qword [rdx + 8 * 4]
mov rsi, qword [rdx + 8 * 7]
mov rdx, qword [rdx + 8 * 6]
hlt
+62
View File
@@ -0,0 +1,62 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0x1F"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
%macro cfmerge 0
; Get CF
sbb r14, r14
and r14, 1
; Merge in to results
shl r15, 1
or r15, r14
%endmacro
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFF80000000
mov [rdx + 8 * 0], rax
mov [rdx + 8 * 1], rax
mov [rdx + 8 * 2], rax
mov rax, 0x01
mov [rdx + 8 * 3], eax
mov rax, 0x0
mov [rdx + 8 * 3 + 4], eax
xor r15, r15 ; Will contain our results
; Test and set
mov r13, 1
bts word [rdx], r13w
cfmerge
; Ensure it is set
mov r13, 1
bt word [rdx], r13w
cfmerge
mov r13, 32
bts dword [rdx], r13d
cfmerge
bt dword [rdx], r13d
cfmerge
mov r13, 64 * 3
bts qword [rdx], r13
cfmerge
mov r13, 64 * 3
bt qword [rdx], r13
cfmerge
hlt
+58
View File
@@ -0,0 +1,58 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x4142434457585847",
"RBX": "0x6162636477786566",
"RCX": "0x9596979897988182",
"RDX": "0x939495969798A1A2",
"RSI": "0xB1B2B3B4B5B6B7B8"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x6162636465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
mov rax, 0x8182838485868788
mov [rdx + 8 * 4], rax
mov rax, 0x9192939495969798
mov [rdx + 8 * 5], rax
mov rax, 0xA1A2A3A4A5A6A7A8
mov [rdx + 8 * 6], rax
mov rax, 0xB1B2B3B4B5B6B7B8
mov [rdx + 8 * 7], rax
mov rax, [rdx + 8 * 1]
shrd word [rdx + 8 * 0 + 0], ax, 8
shrd word [rdx + 8 * 0 + 2], ax, 16
shrd word [rdx + 8 * 0 + 4], ax, 32
mov rax, [rdx + 8 * 3]
shrd dword [rdx + 8 * 2 + 0], eax, 16
shrd dword [rdx + 8 * 2 + 4], eax, 32
mov rax, [rdx + 8 * 5]
shrd qword [rdx + 8 * 4 + 0], rax, 16
shrd qword [rdx + 8 * 4 + 0], rax, 32
shrd qword [rdx + 8 * 6 + 0], rax, 48
shrd qword [rdx + 8 * 7 + 0], rax, 64
mov rax, qword [rdx + 8 * 0]
mov rbx, qword [rdx + 8 * 2]
mov rcx, qword [rdx + 8 * 4]
mov rsi, qword [rdx + 8 * 7]
mov rdx, qword [rdx + 8 * 6]
hlt
+67
View File
@@ -0,0 +1,67 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x4142434457585847",
"RBX": "0x6162636477786566",
"RCX": "0x9596979897988182",
"RDX": "0x939495969798A1A2",
"RSI": "0xB1B2B3B4B5B6B7B8"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x6162636465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
mov rax, 0x8182838485868788
mov [rdx + 8 * 4], rax
mov rax, 0x9192939495969798
mov [rdx + 8 * 5], rax
mov rax, 0xA1A2A3A4A5A6A7A8
mov [rdx + 8 * 6], rax
mov rax, 0xB1B2B3B4B5B6B7B8
mov [rdx + 8 * 7], rax
mov rax, [rdx + 8 * 1]
mov cl, 8
shrd word [rdx + 8 * 0 + 0], ax, cl
mov cl, 16
shrd word [rdx + 8 * 0 + 2], ax, cl
mov cl, 32
shrd word [rdx + 8 * 0 + 4], ax, cl
mov rax, [rdx + 8 * 3]
mov cl, 16
shrd dword [rdx + 8 * 2 + 0], eax, cl
mov cl, 32
shrd dword [rdx + 8 * 2 + 4], eax, cl
mov rax, [rdx + 8 * 5]
mov cl, 16
shrd qword [rdx + 8 * 4 + 0], rax, cl
mov cl, 32
shrd qword [rdx + 8 * 4 + 0], rax, cl
mov cl, 48
shrd qword [rdx + 8 * 6 + 0], rax, cl
mov cl, 64
shrd qword [rdx + 8 * 7 + 0], rax, cl
mov rax, qword [rdx + 8 * 0]
mov rbx, qword [rdx + 8 * 2]
mov rcx, qword [rdx + 8 * 4]
mov rsi, qword [rdx + 8 * 7]
mov rdx, qword [rdx + 8 * 6]
hlt
+42
View File
@@ -0,0 +1,42 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x5C00",
"RBX": "0x54D45400",
"RSI": "0x4ECE4DCD4CCC4C00"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r15, 0xe0000000
mov rax, 0x4142434445464748
mov [r15 + 8 * 0], rax
mov rax, 0x5152535455565758
mov [r15 + 8 * 1], rax
mov rax, 0x6162636465666768
mov [r15 + 8 * 2], rax
mov rax, 0x0
mov [r15 + 8 * 3], rax
mov [r15 + 8 * 4], rax
mov ax, -128
imul ax, word [r15 + 8 * 0 + 0]
mov word [r15 + 8 * 3 + 0], ax
mov eax, -128
imul eax, dword [r15 + 8 * 1 + 0]
mov dword [r15 + 8 * 4 + 0], eax
mov rax, -128
imul rax, qword [r15 + 8 * 2 + 0]
mov rsi, rax
mov rax, [r15 + 8 * 3]
mov rbx, [r15 + 8 * 4]
hlt
+96
View File
@@ -0,0 +1,96 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x414243444546FF48",
"RBX": "0x51525354FFFF5758",
"RCX": "0xFFFFFFFF65666768",
"RDX": "0xFFFFFFFFFFFFFFFF",
"RBP": "0x4748",
"RSI": "0x55565758",
"RDI": "0x6162636465666768",
"RSP": "0x7172737475767778",
"R8": "0x7172737475767778"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r10, 0xe0000000
mov rax, 0x4142434445464748
mov [r10 + 8 * 0], rax
mov rax, 0x5152535455565758
mov [r10 + 8 * 1], rax
mov rax, 0x6162636465666768
mov [r10 + 8 * 2], rax
mov rax, 0x7172737475767778
mov [r10 + 8 * 3], rax
mov rax, 0
mov [r10 + 8 * 4], rax
mov [r10 + 8 * 5], rax
mov [r10 + 8 * 6], rax
mov [r10 + 8 * 7], rax
mov [r10 + 8 * 8], rax
; False
mov rax, 0
mov rcx, 0xFF
cmpxchg [r10 + 8 * 0 + 0], cl
mov [r10 + 8 * 4 + 0], al
; True
mov rax, 0x47
mov rcx, 0xFF
cmpxchg [r10 + 8 * 0 + 1], cl
mov [r10 + 8 * 4 + 1], al
; False
mov rax, 0
mov rcx, 0xFFFF
cmpxchg [r10 + 8 * 1 + 0], cx
mov [r10 + 8 * 5 + 0], ax
; True
mov rax, 0x5556
mov rcx, 0xFFFF
cmpxchg [r10 + 8 * 1 + 2], cx
mov [r10 + 8 * 5 + 2], ax
; False
mov rax, 0
mov rcx, 0xFFFFFFFF
cmpxchg [r10 + 8 * 2 + 0], ecx
mov [r10 + 8 * 6 + 0], eax
; True
mov rax, 0x61626364
mov rcx, 0xFFFFFFFF
cmpxchg [r10 + 8 * 2 + 4], ecx
mov [r10 + 8 * 6 + 4], eax
; False
mov rax, 0
mov rcx, 0xFFFFFFFFFFFFFFFF
cmpxchg [r10 + 8 * 3 + 0], rcx
mov [r10 + 8 * 7 + 0], rax
; True
mov rax, 0x7172737475767778
mov rcx, 0xFFFFFFFFFFFFFFFF
cmpxchg [r10 + 8 * 3 + 0], rcx
mov [r10 + 8 * 8], rax
mov rax, [r10 + 8 * 0]
mov rbx, [r10 + 8 * 1]
mov rcx, [r10 + 8 * 2]
mov rdx, [r10 + 8 * 3]
mov rbp, [r10 + 8 * 4]
mov rsi, [r10 + 8 * 5]
mov rdi, [r10 + 8 * 6]
mov rsp, [r10 + 8 * 7]
mov r8, [r10 + 8 * 8]
hlt
+64
View File
@@ -0,0 +1,64 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0xA"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
%macro cfmerge 0
; Get CF
sbb r14, r14
and r14, 1
; Merge in to results
shl r15, 1
or r15, r14
%endmacro
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFF80000000
mov [rdx + 8 * 0], rax
mov [rdx + 8 * 1], rax
mov [rdx + 8 * 2], rax
mov rax, 0x01
mov [rdx + 8 * 3], eax
mov rax, 0x0
mov [rdx + 8 * 3 + 4], eax
xor r15, r15 ; Will contain our results
; Test and set
mov r13, 1
btr word [rdx], r13w
cfmerge
; Ensure it is set
mov r13, 1
bt word [rdx], r13w
cfmerge
mov r13, 32
btr dword [rdx], r13d
cfmerge
bt dword [rdx], r13d
cfmerge
mov r13, 64 * 3
btr qword [rdx], r13
cfmerge
mov r13, 64 * 3
bt qword [rdx], r13
cfmerge
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0x41424344454600FF",
"R14": "0x00000000000000FF",
"R13": "0x00000000000000FF",
"R12": "0x41424344454600FF",
"R11": "0x00000000000000FF",
"R10": "0x00000000000000FF"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFFFFFFFFFF
mov [rdx + 8 * 0], rax
mov r15, 0x4142434445464748
mov r14, 0x4142434445464748
mov r13, 0x4142434445464748
mov r12, 0x4142434445464748
mov r11, 0x4142434445464748
mov r10, 0x4142434445464748
movzx r15w, byte [rdx + 8 * 0]
movzx r14d, byte [rdx + 8 * 0]
movzx r13, byte [rdx + 8 * 0]
movzx r12w, al
movzx r11d, al
movzx r10, al
hlt
+31
View File
@@ -0,0 +1,31 @@
%ifdef CONFIG
{
"RegData": {
"R14": "0x000000000000FFFF",
"R13": "0x000000000000FFFF",
"R12": "0x000000000000FFFF",
"R11": "0x000000000000FFFF"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFFFFFFFFFF
mov [rdx + 8 * 0], rax
mov r14, 0x4142434445464748
mov r13, 0x4142434445464748
mov r12, 0x4142434445464748
mov r11, 0x4142434445464748
movzx r14d, word [rdx + 8 * 0]
movzx r13, word [rdx + 8 * 0]
movzx r12d, ax
movzx r11, ax
hlt
+62
View File
@@ -0,0 +1,62 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0x1A"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
%macro cfmerge 0
; Get CF
sbb r14, r14
and r14, 1
; Merge in to results
shl r15, 1
or r15, r14
%endmacro
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFF80000000
mov [rdx + 8 * 0], rax
mov [rdx + 8 * 1], rax
mov [rdx + 8 * 2], rax
mov rax, 0x01
mov [rdx + 8 * 3], eax
mov rax, 0x0
mov [rdx + 8 * 3 + 4], eax
xor r15, r15 ; Will contain our results
; Test and set
mov r13, 1
btc word [rdx], r13w
cfmerge
; Ensure it is set
mov r13, 1
bt word [rdx], r13w
cfmerge
mov r13, 32
btc dword [rdx], r13d
cfmerge
bt dword [rdx], r13d
cfmerge
mov r13, 64 * 3
btc qword [rdx], r13
cfmerge
mov r13, 64 * 3
bt qword [rdx], r13
cfmerge
hlt
+51
View File
@@ -0,0 +1,51 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0xFFFFFFFFFFFF0000",
"R14": "0x0",
"R13": "0x0",
"R12": "0xFFFFFFFFFFFF0004",
"R11": "0x04",
"R10": "0x04",
"R9": "0xFFFFFFFFFFFFFFFF",
"R8": "0xFFFFFFFFFFFFFFFF",
"RSI": "0xFFFFFFFFFFFFFFFF"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFFFFFFFFFF
mov [rdx + 8 * 0], rax
mov rax, 0x1010101010101010
mov [rdx + 8 * 1], rax
mov rax, 0
mov [rdx + 8 * 2], rax
mov r15, -1
mov r14, -1
mov r13, -1
mov r12, -1
mov r11, -1
mov r10, -1
mov r9, -1
mov r8, -1
mov rsi, -1
bsf r15w, word [rdx + 8 * 0]
bsf r14d, dword [rdx + 8 * 0]
bsf r13, qword [rdx + 8 * 0]
bsf r12w, word [rdx + 8 * 1]
bsf r11d, dword [rdx + 8 * 1]
bsf r10, qword [rdx + 8 * 1]
bsf r9w, word [rdx + 8 * 2]
bsf r8d, dword [rdx + 8 * 2]
bsf rsi, qword [rdx + 8 * 2]
hlt
+51
View File
@@ -0,0 +1,51 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0xFFFFFFFFFFFF000F",
"R14": "0x1F",
"R13": "0x3F",
"R12": "0xFFFFFFFFFFFF000C",
"R11": "0x1C",
"R10": "0x3C",
"R9": "0xFFFFFFFFFFFFFFFF",
"R8": "0xFFFFFFFFFFFFFFFF",
"RSI": "0xFFFFFFFFFFFFFFFF"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFFFFFFFFFF
mov [rdx + 8 * 0], rax
mov rax, 0x1010101010101010
mov [rdx + 8 * 1], rax
mov rax, 0
mov [rdx + 8 * 2], rax
mov r15, -1
mov r14, -1
mov r13, -1
mov r12, -1
mov r11, -1
mov r10, -1
mov r9, -1
mov r8, -1
mov rsi, -1
bsr r15w, word [rdx + 8 * 0]
bsr r14d, dword [rdx + 8 * 0]
bsr r13, qword [rdx + 8 * 0]
bsr r12w, word [rdx + 8 * 1]
bsr r11d, dword [rdx + 8 * 1]
bsr r10, qword [rdx + 8 * 1]
bsr r9w, word [rdx + 8 * 2]
bsr r8d, dword [rdx + 8 * 2]
bsr rsi, qword [rdx + 8 * 2]
hlt
+37
View File
@@ -0,0 +1,37 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0x414243444546FFFF",
"R14": "0x00000000FFFFFFFF",
"R13": "0xFFFFFFFFFFFFFFFF",
"R12": "0x414243444546FFFF",
"R11": "0x00000000FFFFFFFF",
"R10": "0xFFFFFFFFFFFFFFFF"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFFFFFFFFFF
mov [rdx + 8 * 0], rax
mov r15, 0x4142434445464748
mov r14, 0x4142434445464748
mov r13, 0x4142434445464748
mov r12, 0x4142434445464748
mov r11, 0x4142434445464748
mov r10, 0x4142434445464748
movsx r15w, byte [rdx + 8 * 0]
movsx r14d, byte [rdx + 8 * 0]
movsx r13, byte [rdx + 8 * 0]
movsx r12w, al
movsx r11d, al
movsx r10, al
hlt
+31
View File
@@ -0,0 +1,31 @@
%ifdef CONFIG
{
"RegData": {
"R14": "0x00000000FFFFFFFF",
"R13": "0xFFFFFFFFFFFFFFFF",
"R12": "0x00000000FFFFFFFF",
"R11": "0xFFFFFFFFFFFFFFFF"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0xFFFFFFFFFFFFFFFF
mov [rdx + 8 * 0], rax
mov r14, 0x4142434445464748
mov r13, 0x4142434445464748
mov r12, 0x4142434445464748
mov r11, 0x4142434445464748
movsx r14d, word [rdx + 8 * 0]
movsx r13, word [rdx + 8 * 0]
movsx r12d, ax
movsx r11, ax
hlt
+53
View File
@@ -0,0 +1,53 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x4142434445464749",
"RBX": "0x5152535455565759",
"RCX": "0x6162636465666769",
"RDX": "0x7172737475767779",
"R15": "0x49",
"R14": "0x5759",
"R13": "0x65666769",
"R12": "0x7172737475767779"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov r10, 0xe0000000
mov rax, 0x4142434445464748
mov [r10 + 8 * 0], rax
mov rax, 0x5152535455565758
mov [r10 + 8 * 1], rax
mov rax, 0x6162636465666768
mov [r10 + 8 * 2], rax
mov rax, 0x7172737475767778
mov [r10 + 8 * 3], rax
mov rax, 0x01
xadd byte [r10 + 8 * 0], al
mov rax, 0x01
xadd word [r10 + 8 * 1], ax
mov rax, 0x01
xadd dword [r10 + 8 * 2], eax
mov rax, 0x01
xadd qword [r10 + 8 * 3], rax
mov rax, [r10 + 8 * 0]
mov rbx, [r10 + 8 * 1]
mov rcx, [r10 + 8 * 2]
mov rdx, [r10 + 8 * 3]
mov r15, 0x00
xadd byte [r10 + 8 * 0], r15b
mov r14, 0x00
xadd word [r10 + 8 * 1], r14w
mov r13, 0x00
xadd dword [r10 + 8 * 2], r13d
mov r12, 0x00
xadd qword [r10 + 8 * 3], r12
hlt
+51
View File
@@ -0,0 +1,51 @@
%ifdef CONFIG
{
"RegData": {
"XMM0": ["0xFFFFFFFFFFFFFFFF", "0x0"],
"XMM1": ["0x0", "0xFFFFFFFF00000000"],
"XMM2": ["0xFFFFFFFFFFFFFFFF", "0xFFFFFFFF00000000"],
"XMM3": ["0x3f80000040000000", "0x4000000040800000"],
"XMM4": ["0x0", "0xFFFFFFFFFFFFFFFF"],
"XMM5": ["0xFFFFFFFFFFFFFFFF", "0x00000000FFFFFFFF"],
"XMM6": ["0x0000000000000000", "0x00000000FFFFFFFF"],
"XMM7": ["0x3f80000040000000", "0x4000000040800000"],
"XMM8": ["0x3f80000040000000", "0x40a000003f800000"]
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x3f80000040000000
mov [rdx + 8 * 0], rax
mov rax, 0x4000000040800000
mov [rdx + 8 * 1], rax
mov rax, 0x3f80000040000000
mov [rdx + 8 * 2], rax
mov rax, 0x40a000003f800000
mov [rdx + 8 * 3], rax
movapd xmm0, [rdx + 8 * 0]
movapd xmm1, [rdx + 8 * 0]
movapd xmm2, [rdx + 8 * 0]
movapd xmm3, [rdx + 8 * 0]
movapd xmm4, [rdx + 8 * 0]
movapd xmm5, [rdx + 8 * 0]
movapd xmm6, [rdx + 8 * 0]
movapd xmm7, [rdx + 8 * 0]
movapd xmm8, [rdx + 8 * 2]
cmpps xmm0, xmm8, 0x00 ; EQ
cmpps xmm1, xmm8, 0x01 ; LT
cmpps xmm2, xmm8, 0x02 ; LTE
;cmpps xmm3, xmm8, 0x03 ; Unordered
cmpps xmm4, xmm8, 0x04 ; NEQ
cmpps xmm5, xmm8, 0x05 ; NLT
cmpps xmm6, xmm8, 0x06 ; NLTE
;cmpps xmm7, xmm8, 0x07 ; Ordered
hlt
+64
View File
@@ -0,0 +1,64 @@
%ifdef CONFIG
{
"RegData": {
"R15": "0x0000000008070605",
"R14": "0x00000000F8F7F6F5",
"R13": "0x00000000E8E7E6E5",
"R12": "0x00000000D8D7D6D5",
"R11": "0x00000000C8C7C6C5",
"R10": "0x00000000B8B7B6B5",
"R9": "0x00000000A8A7A6A5",
"R8": "0x0000000098979695",
"RSP": "0x8887868584838281",
"RDI": "0x7877767574737271",
"RSI": "0x6867666564636261",
"RBP": "0x5857565554535251",
"RDX": "0x4847464544434241",
"RCX": "0x3837363534333231",
"RBX": "0x2827262524232221",
"RAX": "0x1817161514131211"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x1112131415161718
mov rbx, 0x2122232425262728
mov rcx, 0x3132333435363738
mov rdx, 0x4142434445464748
mov rbp, 0x5152535455565758
mov rsi, 0x6162636465666768
mov rdi, 0x7172737475767778
mov rsp, 0x8182838485868788
mov r8, 0x9192939495969798
mov r9, 0xA1A2A3A4A5A6A7A8
mov r10, 0xB1B2B3B4B5B6B7B8
mov r11, 0xC1C2C3C4C5C6C7C8
mov r12, 0xD1D2D3D4D5D6D7D8
mov r13, 0xE1E2E3E4E5E6E7E8
mov r14, 0xF1F2F3F4F5F6F7F8
mov r15, 0x0102030405060708
bswap rax
bswap rbx
bswap rcx
bswap rdx
bswap rbp
bswap rsi
bswap rdi
bswap rsp
bswap r8d
bswap r9d
bswap r10d
bswap r11d
bswap r12d
bswap r13d
bswap r14d
bswap r15d
hlt