🧠 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ AsmX

AsmX β€” это Π½Π΅ просто язык Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ программирования. Π­Ρ‚ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ ассСмблСр с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния удобства, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΉ чистоты ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ контроля Π½Π°Π΄ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

AsmX β€” высокоуровнСвый язык с ассСмблСрной философиСй. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ELF64‑бинарники ΠΏΠΎΠ΄ x86_64, управляя инструкциями Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· соврСмСнный синтаксис. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…: JITC (интСрпрСтация) ΠΈ ZCC (компиляция). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнный компилятор ZGEN.

βš™οΈ АрхитСктура ΠΈ компиляция

AsmX Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ компиляторный стСк. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ JITC позволяСт быстро Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π° ZGEN выполняСт AOT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π² ELF. Π’Π½ΡƒΡ‚Ρ€ΠΈ: parser β†’ compiler_driver β†’ hwm + .tbl β†’ hwc.

Parser строит AST, hwm ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ инструкции Π² opcode’ы, hwc собираСт ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ELF64. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ вСрсионированиС Ρ‡Π΅Ρ€Π΅Π· rev, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ rev-avx2, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π°Π±ΠΎΡ€ инструкций CPU.

πŸ’‘ ΠŸΡ€ΠΈΠΌΠ΅Ρ€

@fn pub main {
    ret
}

Π”Π°ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ создаёт ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ELF-Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ с .text-сСкциСй ΠΈ entrypoint.

βœ… ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ, Π½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ синтаксис

  • ГСнСрация ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ELF Π±Π΅Π· внСшнСго Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ°

  • SysV ABI ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SSE, AVX ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· rev

❌ НСдостатки

  • Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ понимания Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86_64

  • Мало Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ внутрСнностям hwm, .tbl

  • Пока Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ x86‑архитСктуру

πŸ”— Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ