summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-02-22 21:15:41 +1100
committerkitty <nepeta@canaglie.net>2026-02-22 21:15:41 +1100
commit5ce0c817e8ae12fa7b9130b859c544f032db1b01 (patch)
treebab0e2a44d6a6e667ec68aaec8e78e90dd95a619
parenta531450447e3526abc415c8d950a5dd654674ec2 (diff)
idea
the commas for rmmod.reg registers is quite elegant i think. i hope it ends up working well
-rw-r--r--jefs.fs34
1 files changed, 22 insertions, 12 deletions
diff --git a/jefs.fs b/jefs.fs
index 63c8c33..22126c8 100644
--- a/jefs.fs
+++ b/jefs.fs
@@ -42,19 +42,29 @@ variable modrm
: rex.x rex @ 42 or rex ! ;
: rex.b rex @ 41 or rex ! ;
-: ax 0 ; : cx 1 ; : dx 2 ; : bx 3 ;
-: sp 4 ; : bp 5 ; : si 6 ; : di 7 ;
-\ at least for now, you have to differentiate these from above
-\ by manually setting rex.
-: r8 0 ; : r9 1 ; : r10 2 ; : r11 3 ;
-: r12 4 ; : r13 5 ; : r14 6 ; : r15 7 ;
-\ are there instructions that use registers but Not r/m bytes?
-\ i don't actually know
-
+\ REGISTERS {{{
+: rax modrm @ 0 or modrm ! ; : rcx modrm @ 1 or modrm ! ;
+: rdx modrm @ 2 or modrm ! ; : rbx modrm @ 3 or modrm ! ;
+: rsp modrm @ 4 or modrm ! ; : rbp modrm @ 5 or modrm ! ;
+: rsi modrm @ 6 or modrm ! ; : rdi modrm @ 7 or modrm ! ;
+: r8 modrm @ 0 or modrm ! rex.b ; : r9 modrm @ 1 or modrm ! rex.b ;
+: r10 modrm @ 2 or modrm ! rex.b ; : r11 modrm @ 3 or modrm ! rex.b ;
+: r12 modrm @ 4 or modrm ! rex.b ; : r13 modrm @ 5 or modrm ! rex.b ;
+: r14 modrm @ 6 or modrm ! rex.b ; : r15 modrm @ 7 or modrm ! rex.b ;
+
+: rax, modrm @ 00 or modrm ! ; : rcx, modrm @ 08 or modrm ! ;
+: rdx, modrm @ 10 or modrm ! ; : rbx, modrm @ 18 or modrm ! ;
+: rsp, modrm @ 20 or modrm ! ; : rbp, modrm @ 28 or modrm ! ;
+: rsi, modrm @ 30 or modrm ! ; : rdi, modrm @ 38 or modrm ! ;
+: r8, modrm @ 00 or modrm ! rex.r ; : >r9, modrm @ 08 or modrm ! rex.r ;
+: r10, modrm @ 10 or modrm ! rex.r ; : >r11, modrm @ 18 or modrm ! rex.r ;
+: r12, modrm @ 20 or modrm ! rex.r ; : >r13, modrm @ 28 or modrm ! rex.r ;
+: r14, modrm @ 30 or modrm ! rex.r ; : >r15, modrm @ 38 or modrm ! rex.r ;
+\ }}}
\ example idea: (from execute below)
-\ rex.w rex.r r11 rex.b r14 0 d) mov,
-\ rex.w rex.r r14 rex.b r14 8 d) lea,
-\ rex.b r11 call,
+\ rex.w r11, r14 0 d) mov,
+\ rex.w r14, r14 8 d) lea,
+\ r11 call,
decimal
: execute [ hex