<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nader Mahbub Khan Nabil</title>
    <description>The latest articles on DEV Community by Nader Mahbub Khan Nabil (@nadermkhan).</description>
    <link>https://dev.to/nadermkhan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4075164%2F83b329eb-b3c5-4efc-976e-45853bddd01e.png</url>
      <title>DEV Community: Nader Mahbub Khan Nabil</title>
      <link>https://dev.to/nadermkhan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nadermkhan"/>
    <language>en</language>
    <item>
      <title>Building a 100% Freestanding, Zero-CRT JIT &amp; AOT Compiler Engine in C++20 for Anastasia Assembly (.ana)</title>
      <dc:creator>Nader Mahbub Khan Nabil</dc:creator>
      <pubDate>Wed, 12 Aug 2026 18:19:18 +0000</pubDate>
      <link>https://dev.to/nadermkhan/building-a-100-freestanding-zero-crt-jit-aot-compiler-engine-in-c20-for-anastasia-assembly-lkn</link>
      <guid>https://dev.to/nadermkhan/building-a-100-freestanding-zero-crt-jit-aot-compiler-engine-in-c20-for-anastasia-assembly-lkn</guid>
      <description>&lt;p&gt;Hi everyone,Hope you all are doing well :)&lt;/p&gt;

&lt;p&gt;Over the past few months, I built &lt;strong&gt;Anastasia Engine v7.1&lt;/strong&gt;: a high-throughput, bare-metal JIT &amp;amp; AOT compiler engine for custom &lt;strong&gt;Anastasia Assembly (&lt;code&gt;.ana&lt;/code&gt;)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The primary architectural goal was simple: &lt;strong&gt;0 external dynamic dependencies&lt;/strong&gt; and &lt;strong&gt;0 standard C runtime (&lt;code&gt;libc&lt;/code&gt;/&lt;code&gt;libstdc++&lt;/code&gt;) linking&lt;/strong&gt;. The entire engine compiles under &lt;code&gt;-ffreestanding -nostdlib -fno-exceptions -fno-rtti&lt;/code&gt; and operates directly on raw Linux &amp;amp; Win32 kernel syscalls (&lt;code&gt;raw_mmap&lt;/code&gt;, &lt;code&gt;raw_mprotect&lt;/code&gt;, &lt;code&gt;raw_clone&lt;/code&gt;, &lt;code&gt;raw_futex&lt;/code&gt;, &lt;code&gt;raw_io_uring&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Here is how it works under the hood and why I built it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Core Technical Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;100% Freestanding Zero-CRT Architecture&lt;/strong&gt;: Zero external third-party C++ runtime dependencies (&lt;code&gt;AnaEncoder&lt;/code&gt;). Executes directly on bare-metal syscall boundaries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Native String Literals &amp;amp; Zero-Linker &lt;code&gt;.rodata&lt;/code&gt; Emission&lt;/strong&gt;: &lt;code&gt;const-string&lt;/code&gt; support with parse-time zero-copy length tracking. Features a JIT read-only interned string pool and an AOT freestanding ELF linker (&lt;code&gt;ElfEmitter&lt;/code&gt;) capable of emitting &lt;code&gt;.rodata&lt;/code&gt; sections and patching RIP-relative relocations (&lt;code&gt;R_X86_64_PC32&lt;/code&gt; / &lt;code&gt;R_AARCH64_ADR_PREL_PG_HI21&lt;/code&gt;) without needing &lt;code&gt;ld&lt;/code&gt; or &lt;code&gt;link.exe&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-Architecture Native Encoders&lt;/strong&gt;: Native x86_64 instruction encoder (&lt;code&gt;AnaEncoder&lt;/code&gt;) featuring VEX (256-bit AVX2) and EVEX (512-bit AVX-512) byte-packing, paired with a fixed 32-bit AArch64 (ARM64) backend.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SSA Optimization &amp;amp; Autovectorization&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSA Counted-Loop Autovectorizer&lt;/strong&gt;: Transforms scalar loops into 256-bit or 512-bit packed SIMD vector operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-Temporal Store Streaming&lt;/strong&gt;: Emits non-temporal stores (&lt;code&gt;vmovntdq&lt;/code&gt; + &lt;code&gt;sfence&lt;/code&gt;) to bypass L1/L2/L3 cache pollution on large array writes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escape Analysis &amp;amp; Scalar Replacement&lt;/strong&gt;: Allocates non-escaping objects directly to virtual registers (&lt;strong&gt;0 heap allocations&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zero-Copy Hardware Async I/O (&lt;code&gt;io_uring&lt;/code&gt;)&lt;/strong&gt;: Submission Queue (SQ) and Completion Queue (CQ) ring buffers managed directly via kernel &lt;code&gt;raw_mmap&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;199 Verified Engine Tests&lt;/strong&gt;: Passes 199/199 tests (40 Core Engine QA + 30 LeetCode + 30 Codeforces 1800+ + 100 Hardcore Algorithm &amp;amp; Stress Tests).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Anastasia Assembly (&lt;code&gt;.ana&lt;/code&gt;) Code Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.fn compute_factorial(p0: i64) -&amp;gt; i64
    .registers 3 local

    move-const v0, 1         ; Accumulator = 1
    move-const v1, 1         ; Counter i = 1

loop_start:
    if-ge v1, p0, loop_end   ; Exit loop if i &amp;gt;= N
    mul-int/64 v0, v0, v1    ; acc *= i
    add-int/64 v1, v1, 1     ; i++
    goto loop_start

loop_end:
    sink-mem v0              ; Preserve side-effects in volatile sink
    return-val v0            ; Return factorial result
.end_fn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  CLI &amp;amp; Execution Modes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Execute Anastasia Assembly program in microsecond JIT Mode&lt;/span&gt;
./build/anastasia_engine program.ana

&lt;span class="c"&gt;# 2. Compile Anastasia Assembly program to Relocatable ELF Object File (AOT Mode)&lt;/span&gt;
./build/anastasia_engine &lt;span class="nt"&gt;--aot&lt;/span&gt; input.ana output.o

&lt;span class="c"&gt;# 3. Run full ecosystem test suite (199 / 199 Tests)&lt;/span&gt;
./build.sh &lt;span class="nt"&gt;--test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I'd love to hear your feedback on the architecture, SSA passes, or freestanding codegen!&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/nadermkhan/anastasia" rel="noopener noreferrer"&gt;github.com/nadermkhan/anastasia&lt;/a&gt;&lt;br&gt;&lt;br&gt;
👉 &lt;strong&gt;Technical Documentation&lt;/strong&gt;: &lt;a href="https://github.com/nadermkhan/anastasia/blob/main/doc/doc.md" rel="noopener noreferrer"&gt;doc/doc.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks &amp;lt;3&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>computerscience</category>
      <category>compilers</category>
      <category>assembly</category>
    </item>
  </channel>
</rss>
