Implements SCAS unit tests

This commit is contained in:
Ryan Houdek 2020-05-29 23:38:27 -07:00
parent c8b2aefb9a
commit 4db38f389a
8 changed files with 261 additions and 0 deletions

View File

@ -0,0 +1,43 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x1200",
"RDI": "0xE0000001"
},
"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, 0x0
mov [rdx + 8 * 2], rax
lea rdi, [rdx + 8 * 0]
cld
mov rax, 0x61
scasb
; cmp = 0x61 - 0x48 = 0x19
; 0: CF - 00000000
; 1: - 00000010
; 2: PF - 00000000
; 3: 0 - 00000000
; 4: AF - 00010000
; 5: 0 - 00000000
; 6: ZF - 00000000
; 7: SF - 00000000
; ================
; 00010010
; OF: LAHF doesn't load - 0
mov rax, 0
lahf
hlt

View File

@ -0,0 +1,31 @@
%ifdef CONFIG
{
"RegData": {
"RCX": "5",
"RDI": "0xE0000003"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445466161
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x0
mov [rdx + 8 * 2], rax
lea rdi, [rdx + 8 * 0]
cld
mov rax, 0x61
mov rcx, 8
cmp rax, 0x61
rep scasb
hlt

View File

@ -0,0 +1,31 @@
%ifdef CONFIG
{
"RegData": {
"RCX": "1",
"RDI": "0xE0000007"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4161434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x0
mov [rdx + 8 * 2], rax
lea rdi, [rdx + 8 * 0]
cld
mov rax, 0x61
mov rcx, 8
cmp rax, 0
repne scasb
hlt

View File

@ -0,0 +1,31 @@
%ifdef CONFIG
{
"RegData": {
"RCX": "5",
"RDI": "0xE000000D"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5161535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x0
mov [rdx + 8 * 2], rax
lea rdi, [rdx + 8 * 2]
std
mov rax, 0x61
mov rcx, 8
cmp rax, 0
repne scasb
hlt

View File

@ -0,0 +1,31 @@
%ifdef CONFIG
{
"RegData": {
"RCX": "7",
"RDI": "0xE000000F"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445466161
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x0
mov [rdx + 8 * 2], rax
lea rdi, [rdx + 8 * 2]
std
mov rax, 0x61
mov rcx, 8
cmp rax, 0x61
rep scasb
hlt

View File

@ -0,0 +1,31 @@
%ifdef CONFIG
{
"RegData": {
"RCX": "6",
"RDI": "0xE0000008"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434461626364
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x0
mov [rdx + 8 * 2], rax
lea rdi, [rdx + 8 * 0]
cld
mov rax, 0x61626364
mov rcx, 8
cmp rax, 0x61626364
rep scasd
hlt

View File

@ -0,0 +1,32 @@
%ifdef CONFIG
{
"RegData": {
"RCX": "6",
"RDI": "0xE0000010"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x6162636465666768
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x0
mov [rdx + 8 * 2], rax
lea rdi, [rdx + 8 * 0]
cld
mov rax, 0x6162636465666768
mov rbx, 0x6162636465666768
mov rcx, 8
cmp rax, rbx
rep scasq
hlt

View File

@ -0,0 +1,31 @@
%ifdef CONFIG
{
"RegData": {
"RCX": "6",
"RDI": "0xE0000004"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445466162
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x0
mov [rdx + 8 * 2], rax
lea rdi, [rdx + 8 * 0]
cld
mov rax, 0x6162
mov rcx, 8
cmp rax, 0x6162
rep scasw
hlt