Download llm2asm/codegen.lisp from Snapkitty/nekomata: direct link, hf CLI and curl.
- Browser
- Download file 1.59 kB
-
https://huggingface.co/Snapkitty/nekomata/resolve/main/llm2asm/codegen.lisp
- Command line
-
hf download hf://Snapkitty/nekomata/llm2asm/codegen.lisp
-
curl -L -o codegen.lisp https://huggingface.co/Snapkitty/nekomata/resolve/main/llm2asm/codegen.lisp
1.59 kB
| (in-package #:nekod.llm2asm) | |
| ;; Generate machine code from AST | |
| ;; Not bytecode -- raw x86-64 ASM | |
| (defun ast->bytes (ast) | |
| "Compile an infra-ast to raw x86-64 bytes." | |
| (case (infra-ast-type ast) | |
| (:place | |
| ;; Emit: call to scheduling kernel | |
| ;; ADD kernel as placeholder scheduling op | |
| (lookup-kernel "ADD")) | |
| (:route | |
| ;; Network routing: XOR-based packet classification | |
| (lookup-kernel "XOR")) | |
| (:scale | |
| ;; Loop over replica count | |
| (lookup-kernel "LOOP")) | |
| (:heal | |
| ;; MEMCPY state snapshot for recovery | |
| (lookup-kernel "MEMCPY")) | |
| (:secure | |
| ;; MEMSET for zero-fill sensitive regions | |
| (lookup-kernel "MEMSET")) | |
| (t (lookup-kernel "ADD")))) | |
| (defun emit-function-prologue () | |
| "x86-64 function prologue bytes." | |
| #(#x55 ; push rbp | |
| #x48 #x89 #xe5)) ; mov rbp, rsp | |
| (defun emit-function-epilogue () | |
| "x86-64 function epilogue bytes." | |
| #(#x5d ; pop rbp | |
| #xc3)) ; ret | |
| (defun codegen (ast) | |
| "Full code generation: AST -> complete x86-64 function bytes." | |
| (let ((body (ast->bytes ast))) | |
| (if body | |
| (concatenate 'vector | |
| (emit-function-prologue) | |
| body | |
| (emit-function-epilogue)) | |
| (error "codegen: no bytes for AST type ~a" (infra-ast-type ast))))) | |
| (defun compile-intent (intent-string) | |
| "One-shot: NL intent string -> raw x86-64 bytes." | |
| (let* ((tokens (tokenize-intent intent-string)) | |
| (ast (extract-ast tokens)) | |
| (bytes (codegen ast))) | |
| (values bytes ast))) | |