mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-25 11:11:35 +01:00
userland x86_64: allow ASSERT_EQ to take just about anything
This commit is contained in:
10
README.adoc
10
README.adoc
@@ -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
|
||||
|
||||
|
||||
@@ -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); \
|
||||
;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user