diff options
Diffstat (limited to 'jefs.s')
| -rw-r--r-- | jefs.s | 129 |
1 files changed, 0 insertions, 129 deletions
@@ -677,83 +677,6 @@ defword "lit", lit, immediate_mask ; C: ( n -- ) ( -- n ) mov qword [here], r12 ret -; what to compile: -; ADDR ← IP + 16 -; JMP AFTER_STRING -; S c, T c, R c, ... -; [ fill AFTER_STRING ] -; PUSH ADDR -; PUSH CNT -defword "litstring", litstring, immediate_mask ; I: ( delim -- ) - pspop r11 ; delim - mov r12, [here] - mov r13, qword [to_in] - add r13, qword [tib] - - mov byte [r12], 0xe9 ; JMP - inc r12 - push r12 ; place to write to later (32bit) - mov dword [r12], 0x00000000 ; filler value - add r12, 4 - - xor r10, r10 ; count -.loop: - mov r15b, byte [r13] - - cmp r15b, r11b - je .done - - mov byte [r12], r15b - - inc r10 ; count - inc r12 ; here - inc r13 ; >in - jmp .loop - -.done: - ; put back r13, we're done reading from tib - inc r13 - sub r13, qword [tib] - mov qword [to_in], r13 - - ; repurpose r13 as reljmp write location - pop r13 - inc r10 ; jump strlen + 1 bytes forward - mov dword [r13], r10d - dec r10 - - add r13, 4 ; r13 + 4 = string location - - ; copied from LIT (which consumes r12) - ; we copy it here because then we keep using - ; theh same r12 as we were before - ; bit long but i think it's Fine - ; i'm not rlly worried about code size - mov dword [r12], 0xf8768d4d - add r12, 4 - mov word [r12], 0xbb49 - add r12, 2 - mov qword [r12], r13 ; addr - add r12, 8 - mov word [r12], 0x894d - add r12, 2 - mov byte [r12], 0x1e - inc r12 - - mov dword [r12], 0xf8768d4d - add r12, 4 - mov word [r12], 0xbb49 - add r12, 2 - mov qword [r12], r10 ; slen - add r12, 8 - mov word [r12], 0x894d - add r12, 2 - mov byte [r12], 0x1e - inc r12 - - mov qword [here], r12 - ret - defword "syscall0", syscall0, 0 ; ( id -- rax ) pspop rax syscall @@ -1158,58 +1081,6 @@ defword ">s0", to_s0, 0 mov r14, wstack ret -; ; TEMPORARY HORRIBLE DEBUGGING BULLSHIT {{{ -; ; debugging word; outputs raw bytes so needs to be piped through `x(x)d` -; ; terrible and awful -; ; W = r14; W <= wstack_b; W+=8 -; defword ".s", dots, 0 -; push r11 -; push r12 -; -; mov r12, r14 -; .loop: -; cmp r12, wstack -; jge .done -; -; mov [.space], r12 -; mov rdx, 8 ; qword -; mov rsi, .space -; mov rdi, 1 -; mov rax, __NR_write -; syscall -; -; mov rdx, 8 ; qword -; mov rsi, r12 -; mov rdi, 1 -; mov rax, __NR_write -; syscall -; lea r12, [r12+8] -; jmp .loop -; -; .done: -; mov rdx, 16 ; 2 qword -; mov rsi, .dmsg -; mov rdi, 1 -; mov rax, __NR_write -; syscall -; -; pop r12 -; pop r11 -; ret -; .space: resq 1 -; .dmsg: db "DONEDONEYIPPEEEE" -; -; defword "HEREDUMP", heredump, 0 -; mov rdx, [here] -; mov r11, [herestart] -; sub rdx, r11 -; mov rsi, [herestart] -; mov rdi, 1 -; mov rax, __NR_write -; syscall -; ret -; ; }}} - ; maybe some of these should be constants? defvar "tib", tib, 0, initfile defvar "#tib", num_tib, 0, initlen |
