mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-30 13:24:27 +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
|
== 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
|
TODO
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
#ifndef COMMON_ARCH_H
|
#ifndef COMMON_ARCH_H
|
||||||
#define COMMON_ARCH_H
|
#define COMMON_ARCH_H
|
||||||
|
|
||||||
#define ASSERT_EQ(reg, const) \
|
#define ASSERT_EQ(general1, general2) \
|
||||||
mov reg, %rdi; \
|
mov general2, %rdi; \
|
||||||
mov const, %rsi; \
|
push %rdi; \
|
||||||
|
mov general1, %rdi; \
|
||||||
|
pop %rsi; \
|
||||||
ASSERT_EQ_DO(64); \
|
ASSERT_EQ_DO(64); \
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,14 @@
|
|||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
ENTRY
|
ENTRY
|
||||||
mov $1, %rax
|
mov $0x123456789ABCDEF0, %r12
|
||||||
ASSERT_EQ(%rax, $1)
|
mov $0x123456789ABCDEF0, %r13
|
||||||
ASSERT_EQ(%rax, $2)
|
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
|
EXIT
|
||||||
|
myvar: .quad 0x123456789ABCDEF0
|
||||||
|
|||||||
@@ -2,11 +2,10 @@
|
|||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
.data
|
|
||||||
var0: .long 0x11111111, 0x22222222, 0x33333333, 0x44444444
|
|
||||||
var1: .long 0x11111111, 0x22222222, 0x33333333, 0x44444444
|
|
||||||
var2: .long 0x11111111, 0x22222223, 0x23333333, 0x44444444
|
|
||||||
ENTRY
|
ENTRY
|
||||||
ASSERT_MEMCMP(var0, var1, $0x10)
|
ASSERT_MEMCMP(var0, var1, $0x10)
|
||||||
ASSERT_MEMCMP(var0, var2, $0x10)
|
ASSERT_MEMCMP(var0, var2, $0x10)
|
||||||
EXIT
|
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