userland x86_64: allow ASSERT_EQ to take just about anything

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-05-09 00:00:00 +00:00
parent 53ef7281a4
commit 5e55547ce1
4 changed files with 27 additions and 11 deletions

View File

@@ -11776,7 +11776,15 @@ Bibliography:
== x86 userland assembly
Getting started at: <<userland-assembly>>.
Arch agnostic infrastructure getting started at: <<userland-assembly>>.
=== x86 userland assembly getting started
These are the main concepts and instructions that you should learn to be able to understand what is going on.
Once those are done, everything else left on userland is just to learn a huge list of instructions: <<x86-userland-assembly-instructions>>
=== x86 userland assembly instructions
TODO

View File

@@ -3,9 +3,11 @@
#ifndef COMMON_ARCH_H
#define COMMON_ARCH_H
#define ASSERT_EQ(reg, const) \
mov reg, %rdi; \
mov const, %rsi; \
#define ASSERT_EQ(general1, general2) \
mov general2, %rdi; \
push %rdi; \
mov general1, %rdi; \
pop %rsi; \
ASSERT_EQ_DO(64); \
;

View File

@@ -3,7 +3,14 @@
#include "common.h"
ENTRY
mov $1, %rax
ASSERT_EQ(%rax, $1)
ASSERT_EQ(%rax, $2)
mov $0x123456789ABCDEF0, %r12
mov $0x123456789ABCDEF0, %r13
ASSERT_EQ(%r12, $0x123456789ABCDEF0)
ASSERT_EQ(%r12, %r13)
ASSERT_EQ(%r12, myvar)
ASSERT_EQ($0x123456789ABCDEF0, %r12)
ASSERT_EQ(%r13, %r12)
ASSERT_EQ(myvar, %r12)
ASSERT_EQ(%r12, $0x123456789ABCDEF1)
EXIT
myvar: .quad 0x123456789ABCDEF0

View File

@@ -2,11 +2,10 @@
#include "common.h"
.data
var0: .long 0x11111111, 0x22222222, 0x33333333, 0x44444444
var1: .long 0x11111111, 0x22222222, 0x33333333, 0x44444444
var2: .long 0x11111111, 0x22222223, 0x23333333, 0x44444444
ENTRY
ASSERT_MEMCMP(var0, var1, $0x10)
ASSERT_MEMCMP(var0, var2, $0x10)
EXIT
var0: .long 0x11111111, 0x22222222, 0x33333333, 0x44444444
var1: .long 0x11111111, 0x22222222, 0x33333333, 0x44444444
var2: .long 0x11111111, 0x22222223, 0x23333333, 0x44444444