# pu3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
THIS IS PU3.
well, it's in beta...
but still, IT'S PU3 WOOOHOOO1?!?!!?!?!?
## what
cpu
## what's it do
run bytecode fast
## why
pu2 was faster but needed more instructions. pu3 slashes inst count usage by about 3x
## ir2?
ir2 stays. maybe i'll rebrand it to ir3, but for now it's ir2. on the beta branch (here) it supports targetting pu3! the tests work, but surely i missed some logic bugs still hidden inside.
## GUIDE???
pu3/pu3.cpu.c
## I NEED MONEY
me too :<
in my insatiable greed era
~~# pu2 + ppu!~~
~~smaller, better, faster, compact-er! let's gooooo~~
~~## pu2~~
~~### how does this workkk~~
~~to be humble, pretty clever stuff. (i forgor)~~
~~### WHAT IS PU2~~
~~- CPU Emulator~~
~~- Assembler~~
~~- Test Suite~~
~~### instruction set~~
~~pu2 has less instructions than pu (aka pu1), [moon's note: wow it seems like i forgor to complete this sentence...]~~
~~## ppu~~
~~### what the hell~~
~~yeah i know! it's a parallel cpu. so much cool stuff you can do with openmp. just make sure to compile with `-fopenmp`~~
~~### WHAT IS THIS~~
~~- CPU~~
~~- Assembler~~
~~- A full day of pain and suffering (now that i think about it, a day isn't really that much time)~~
~~### instruction set~~
~~RTFM (in ppu/ppu.c ofc)~~
# ~~moonvm~~
~~i have no idea what to name this. gimme names if you got any.~~
## ~~parts? how's it work?~~
~~i don't remember. i have ptsd from writing it.~~
## ~~what is it~~
~~i asked it and it said it's a vm+assembler. the unit tests are written by ai cus i was really not feeling like writing unit tests of all things. the skeleton code is all mine tho :P~~
## ~~wowie~~
~~ikr,,,~~
## ~~instruction set?~~
~~check the comments in pu.c~~
~~i still haven't added docs for the assembler, but ehh it's pretty self explanatory. ask ai to explain it to you if you can't be assed to read.~~
## ~~t?~~
~~that file is the instruction encoding table for the assembler. you can add shit to it if you wanna. this is the original:~~
~~```char *R="hlt\0 ar1\2 ar2\3 ar3\4 ar4\5 ar5\6 ar6\7 ar7\x8 ar8\x9 r1a\xA r2a\xB r3a\xC r4a\xD r5a\xE r6a\xF r7a\20 r8a\21 mem\22 aca\23 add\24 sub\25 not\26 clr\27";```~~
~~removing it means you can't assemble stuff anymore. though the pu.c wrapper does write it for you if it doesn't exist.~~