Windows x64
64bitový kód bez optimalizací i s /O2.
msvc-x64-Od / msvc-x64-O2Pramen je můj neuronový dekompilátor pro Windows a MS-DOS. Z assembleru jedné funkce navrhne čitelný kód v C. Natrénoval jsem ho od nuly, jen na assembleru a C.
Skutečný uložený výstup modelu pro délku řetězce. Tato varianta podle testů v repozitáři prošla; nejde o živou dekompilaci v prohlížeči.
MOV ECX,dword ptr [ESP + 4]
MOV EAX,ECX
CMP byte ptr [ECX],0
JE LAB_1
NOP dword ptr [EAX + EAX]
LAB_2:
INC EAX
CMP byte ptr [EAX],0
JNE LAB_2
LAB_1:
SUB EAX,ECX
RETsize_t strlen(const char *str)
{
const char *p = str;
while (*p)
p++;
return p - str;
}Výstup je návrh. Názvy si model vymýšlí, typy odhaduje a logiku je potřeba ověřit. Původní zdrojový kód z binárky doslova neobnoví.
Šest variant pro konkrétní překladače a jejich optimalizace. Vstup z dumpbin, wdis nebo Ghidry zpracuje přiložený normalizátor.
64bitový kód bez optimalizací i s /O2.
msvc-x64-Od / msvc-x64-O232bitový kód s konvencí cdecl, bez optimalizací i s /O2.
msvc-x86-Od / msvc-x86-O216bitový reálný režim: small bez optimalizací a large s far calls a -ox.
dos16-small-od / dos16-large-oxÚloha se počítá jako vyřešená, pokud vygenerované C projde překladem i původními testy. Benchmark HumanEval-C je přeložen stejnými nástroji jako trénovací data.
Greedy decoding, nejvýše 600 nových tokenů. Optimalizovaný kód je výrazně těžší; časté chyby jsou v typech parametrů a názvech pomocných funkcí. Pro msvc-x86-O2 model card výsledek neuvádí.
Metodika a výsledky ↗| Varianta | Úloh | Úspěšnost |
|---|---|---|
msvc-x64-Od | 167 | 40,7 % |
msvc-x64-O2 | 167 | 13,2 % |
msvc-x86-Od | 167 | 32,3 % |
dos16-small-od | 163 | 30,1 % |
dos16-large-ox | 163 | 11,7 % |
Decoder-only transformer ve stylu GPT-2: 16 vrstev, 16 attention heads, kontext 4 096 tokenů a vlastní tokenizer se slovníkem 16 384 tokenů.
Základ tvoří 5,26 milionu párů assembler → C z ExeBench (2,33 miliardy tokenů), přeložených šesti způsoby a deduplikovaných. Trénink doplňuje 3,5 miliardy tokenů zdrojového kódu C/C++.
Pramen zpracovává jednu funkci po druhé, přibližně do 3 500 vstupních tokenů. Jiné překladače než MSVC 19.36 a Open Watcom V2 jsou mimo trénovací distribuci. Globální proměnné a struktury vidí jen jako adresy a offsety.
Stáhněte model a spusťte Python webové rozhraní na 127.0.0.1:8780. GPU je doporučená; na CPU model funguje, ale pomalu.
Dokumentace na Hugging Face ↗pip install huggingface_hub
hf download radix16/pramen --local-dir pramen
cd pramen
pip install -r requirements.txt
python -m pramen.web Použijte dodaný Python runtime. Vlastní tokenizer není kompatibilní s běžným textovým vstupem llama.cpp / LM Studio.
Zdroj: model card a ukázky Pramenu, stav k 6. 10. 2026. Váhy a kód: Apache-2.0. Trénovací zdroje si ponechávají původní licence a zahrnují i GPL-2.0; podrobnosti jsou v repozitáři modelu.