MUHI uraden seznam
Table of Contents
1. Seznam
Žal vam ne garantiram nič boljšega kot poskus kronološkega sortiranja.
Gotovo ne obljubljam popolne skladnost s standardom 😏 (Gledam tebe OW
).
- ass.si/git/MUHI_consortium/1bitvm
- 1. implementacija, v tem repozitoriju je tudi zbirnik (skoraj garantira pravilnost)
- ass.si/git/MUHI_consortium/1bitvm.zig
- 2. implementacija in koincidentno najhitrejša (delujoča)
- github.com/Oliwerix/1bitvm.c
- github.com/MaticBabnik/1bitvm.c-simd
- Ta fork je poskerbel za 2x hitrost z SIMD inštrukcijami
- github.com/MaticBabnik/1bitvm.c-simd
- ni.4a.si/sijanec/ebs
- github.com/marwuint/kihatsu
Najhitrejša implemetacija v cpp in koincidentno ne delujoča. Avtor odgovoril z
:3
- github.com/MaticBabnik/1b.js <
Ni testiran
>- github.com/MaticBabnik/1b.js/tree/jit <
Ni testiran
>- Jit branch 🤯
- Js implementacija
- Upam, da bodo naši zločini pozabljeni s potekom zgodovine
- github.com/MaticBabnik/1b.js/tree/jit <
- github.com/MaticBabnik/lastBit <
Ni testiran
>C++
- Rewrite js implementacije
2. Mirrors
3. Prihodnje [0%]
3.1. STRT Dokumentacija na tej strani!
3.2. STRT Bitrout jezik
3.2.1. TODO Boljši benchmark kot example3.out
3.3. TODO Compliance test
V bitrout assembliju lahko generiram zaporedje ne pogostih inštrukcij. Primerjave med rezultati bodo pokazale pogoste napake (integration testing)!
3.4. TODO FPGA implementacija
3.5. TODO C compiler
To je community opportunity!
3.6. TODO slabši zbirnik
Nočeš met zbirnika ki ima comptime hitrejši od nastalega runtajma. (😥 Brez inline “pythona”)
4. Docs
4.1. Procesor
4.1.1. n
- \(n\in\mathbb{N}\)
- najpogostejši \(n\) je \(7\)
4.1.2. Inštrukcija
- lsb to msb
- op koda (2 bita)
- 2. naslov (\(n\) bitov)
- 1. naslov (\(n\) bitov)
4.1.2.1. TODO copy
(00)
4.1.2.2. TODO load
(01)
4.1.2.3. TODO nand
(10)
4.1.2.4. TODO xor
(11)
4.1.2.5. Primer za \(n = 7\)
4.1.3. Procesor
4.1.4. Registri
- \(2^{n}\) bitov
- Delovni spomin
- Naslavlja neposredno z inštrukcijami
- Implementacije smejo dodati še (dolžina inštrukcije - 1 bitov)
4.1.4.1. TODO IO
4.1.4.1.1. TODO IN
- (0x10)
4.1.4.1.2. TODO INA
- (0x11)
4.1.4.1.3. TODO OUT
- (0x12)
4.1.4.1.4. TODO OUTA
- (0x13)
4.1.4.2. Programski števec
- dolžina inštrukcije
- preslikan na naslove od 0x00 (msb) do 0x0f (lsb)
4.1.4.3. Zemljevid
naslov | raba |
---|---|
0x00 | PC&(1<<0xf) |
0x01 | PC&(1<<0xe) |
0x02 | PC&(1<<0xd) |
0x03 | PC&(1<<0xc) |
0x04 | PC&(1<<0xb) |
0x05 | PC&(1<<0xa) |
0x06 | PC&(1<<0x9) |
0x07 | PC&(1<<0x8) |
0x08 | PC&(1<<0x7) |
0x09 | PC&(1<<0x6) |
0x0a | PC&(1<<0x5) |
0x0b | PC&(1<<0x4) |
0x0c | PC&(1<<0x3) |
0x0d | PC&(1<<0x2) |
0x0e | PC&(1<<0x1) |
0x0f | PC&(1<<0x0) |
0x10 | IN |
0x11 | IN_A |
0x12 | OUT |
0x13 | OUT_A |
0x14-0x7f | Prosto |
0x80-0x8e | Odvisno od implementacije 4.1 |
4.1.5. Programski spomin
- dolžina inštrukcije * 2programski števec bitov \(=(n+1)*2^{2n+3}\)
- ne spremenljiv
4.1.6. Začetno stanje
- registri so vsi nastavljeni na 0.
- Izjema je lahko output available bit.
4.1.7. Korak
- naloži inštrukcijo
- povečaj programski števec
- izvedi inštrukcijo
- če je programski števec isti kot pred inkrementacijo lahko zaključiš z izvajanjem