os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

commit f4a0d8c56a8575971c7ef12fa790c497f770495b
parent 96807d0c75a9514b0830d7c3ad892dae5a5206ab
Author: erai <erai@omiltem.net>
Date:   Sun, 24 Mar 2024 11:20:06 -0400

Move enum to top

Diffstat:
Mas.c | 126++++++++++++++++++++++++++++++++++++++-----------------------------------------
1 file changed, 61 insertions(+), 65 deletions(-)

diff --git a/as.c b/as.c @@ -19,7 +19,66 @@ enum { } enum { - PLACEHOLDER = 128, + CC_O = 0x00, + CC_NO = 0x01, + CC_B = 0x02, + CC_AE = 0x03, + CC_E = 0x04, + CC_NE = 0x05, + CC_BE = 0x06, + CC_A = 0x07, + CC_S = 0x08, + CC_NS = 0x09, + CC_P = 0x0a, + CC_NP = 0x0b, + CC_L = 0x0c, + CC_GE = 0x0d, + CC_LE = 0x0e, + CC_G = 0x0f, +} + +enum { + OP_NOP = 0x90, + OP_RET = 0xc3, + OP_CALL = 0xe8, + OP_JMP = 0xe9, + OP_JCC = 0x0f80, + OP_SETCC = 0x0f90, + + OP_ICALLM = 0x02ff, + + OP_NOTM = 0x02f7, + OP_NEGM = 0x03f7, + + OP_ANDRM = 0x23, + OP_ORRM = 0x0b, + OP_CMPRM = 0x3b, + OP_TESTRM = 0x85, + OP_SUBRM = 0x2b, + OP_ADDRM = 0x03, + OP_XORRM = 0x33, + + OP_ADDI = 0x0081, + + OP_IMULM = 0x04f7, + OP_IDIVM = 0x07f7, + OP_SHLM = 0x04d3, + OP_SHRM = 0x05d3, + + OP_PUSHR = 0x50, + + OP_POPR = 0x58, + + OP_MOVABS = 0xb8, + + OP_SYSCALL = 0x0f05, + + OP_LEA = 0x8d, + OP_LOAD = 0x8b, + OP_LOADB = 0x8a, + OP_STOREB = 0x88, + OP_STORE = 0x89, + OP_MOVE = 0x8b, } struct fixup { @@ -187,7 +246,7 @@ fixup_label(c: *assembler, l: *label) { emit_ptr(c: *assembler, l: *label) { reserve(c, 16); - as_modrm(c, OP_LEA, R_RAX, R_RIP, 0, 0, PLACEHOLDER); + as_modrm(c, OP_LEA, R_RAX, R_RIP, 0, 0, 128); addfixup(c, l); as_opr(c, OP_PUSHR, R_RAX); } @@ -703,69 +762,6 @@ writeout(c: *assembler, start: *label) { fflush(c.out); } -enum { - CC_O = 0x00, - CC_NO = 0x01, - CC_B = 0x02, - CC_AE = 0x03, - CC_E = 0x04, - CC_NE = 0x05, - CC_BE = 0x06, - CC_A = 0x07, - CC_S = 0x08, - CC_NS = 0x09, - CC_P = 0x0a, - CC_NP = 0x0b, - CC_L = 0x0c, - CC_GE = 0x0d, - CC_LE = 0x0e, - CC_G = 0x0f, -} - -enum { - OP_NOP = 0x90, - OP_RET = 0xc3, - OP_CALL = 0xe8, - OP_JMP = 0xe9, - OP_JCC = 0x0f80, - OP_SETCC = 0x0f90, - - OP_ICALLM = 0x02ff, - - OP_NOTM = 0x02f7, - OP_NEGM = 0x03f7, - - OP_ANDRM = 0x23, - OP_ORRM = 0x0b, - OP_CMPRM = 0x3b, - OP_TESTRM = 0x85, - OP_SUBRM = 0x2b, - OP_ADDRM = 0x03, - OP_XORRM = 0x33, - - OP_ADDI = 0x0081, - - OP_IMULM = 0x04f7, - OP_IDIVM = 0x07f7, - OP_SHLM = 0x04d3, - OP_SHRM = 0x05d3, - - OP_PUSHR = 0x50, - - OP_POPR = 0x58, - - OP_MOVABS = 0xb8, - - OP_SYSCALL = 0x0f05, - - OP_LEA = 0x8d, - OP_LOAD = 0x8b, - OP_LOADB = 0x8a, - OP_STOREB = 0x88, - OP_STORE = 0x89, - OP_MOVE = 0x8b, -} - as_emit(a: *assembler, b: int) { emit(a, b); }