aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-03 03:36:06 +0200
committerhachem <im@hachem.wtf>2026-09-03 03:36:06 +0200
commit56ba8b2a373dd1386950592bda9c68ff9f25c203 (patch)
treee33d46037b8a0cb25f5c9052d1f2ee3b143dff22 /README.md
parent9956f626110a5b55fc58049bbe5841a98e941614 (diff)
fix: i JUST started using a static analyzer for ts
Diffstat (limited to 'README.md')
-rw-r--r--README.md6
1 files changed, 3 insertions, 3 deletions
diff --git a/README.md b/README.md
index 5201424..7c3847c 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@ hachem's dumb assembly super-set, pronounced "HD Ass".
The entire point of this project is to provide a middle ground between C and assembly. If we think about why we still write assembly today, it's usually because we need direct control over what the CPU is doing. We want control over the exact instructions being executed, the memory, the stack and everything else that higher-level programming languages normally abstract away. The thing is, not every program written in assembly actually needs that control. Sometimes you want to write something close to the machine without having to manuall deal with every tiny detail yourself. You still want registers, explicit control over memory and a good understanding of what your program is doing, but you don't necessarily need to manually express everything as individual assembly instructions.
-This is where hdass comes in. It's not quite high-level enough to be a C-like language, but it's also not low-level enough to be as annoying to write as raw assembly. The goal is to sit somewhere in between, keeping the parts of assembly that make it useful while making the parts that don't need to be painful a little nicer to work with. hdass transpiles into multiple flavours of assembly, such as NASM and MASM, rather than directly producing machine code. The idea is to provide a single language for writing low-level programs while allowing the backend to translate code into the assembler syntax you want to target. You're still ultimately producing assembly, and you're never particularly far away from the code that gets assembled. The goal isn't to hide the machine from you or turn assembly into C. There are already plenty of high-level languages that do that. hdass just fills the gap between the two, where you might want some more convenience whilst writing assembly without taking away the reason you wanted to work close to the machine in the first place.
+This is where this piece of shit comes in. It's not quite high-level enough to be a C-like language, but it's also not low-level enough to be as annoying to write as raw assembly. The goal is to sit somewhere in between, keeping the parts of assembly that make it useful while making the parts that don't need to be painful a little nicer to work with. hdass transpiles into multiple flavours of assembly, such as NASM and MASM, rather than directly producing machine code. The idea is to provide a single language for writing low-level programs while allowing the backend to translate code into the assembler syntax you want to target. You're still ultimately producing assembly, and you're never particularly far away from the code that gets assembled. The goal isn't to hide the machine from you or turn assembly into C. There are already plenty of high-level languages that do that. hdass just fills the gap between the two, where you might want some more convenience whilst writing assembly without taking away the reason you wanted to work close to the machine in the first place.
## Examples
Here's a simple "Hello, World!" world program written using hdass' syntax:
@@ -15,7 +15,7 @@ const SYS_EXIT = 60
const STDOUT = 1
-data message = "Hello, World!\n"
+data message = "type shi\n"
proc main
{
@@ -34,7 +34,7 @@ proc main
The program still directly controls the registers used for the system calls. Nothing is hiding what the program is doing. More examples can be found in [examples/](examples/).
## Documentation
-The full language reference — directives, declarations, statements, expressions, registers and extensions — lives in [docs/language.md](docs/language.md).
+The full language reference, shit like directives, declarations, statements, expressions, registers and extensions, is explained in [docs/language.md](docs/language.md).
## Building
The build is driven by [premake5](https://premake.github.io/). Generate the makefiles and build the compiler: