<?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: stackframe-hq</title>
    <description>The latest articles on DEV Community by stackframe-hq (@stackframe-hq).</description>
    <link>https://dev.to/stackframe-hq</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%2F4038719%2Fd795264b-8f92-4366-bf14-133c990792e2.png</url>
      <title>DEV Community: stackframe-hq</title>
      <link>https://dev.to/stackframe-hq</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stackframe-hq"/>
    <language>en</language>
    <item>
      <title>I made assembly language interactive — a free x86-64 lesson that runs entirely in your browser</title>
      <dc:creator>stackframe-hq</dc:creator>
      <pubDate>Mon, 20 Jul 2026 19:16:52 +0000</pubDate>
      <link>https://dev.to/stackframe-hq/i-made-assembly-language-interactive-a-free-x86-64-lesson-that-runs-entirely-in-your-browser-5be4</link>
      <guid>https://dev.to/stackframe-hq/i-made-assembly-language-interactive-a-free-x86-64-lesson-that-runs-entirely-in-your-browser-5be4</guid>
      <description>&lt;p&gt;Assembly has a reputation for being brutally hard to learn. I don't think the language is the problem — I think the &lt;em&gt;format&lt;/em&gt; is. Nearly every assembly tutorial is a static wall of text where you read that &lt;code&gt;xor rax, rax&lt;/code&gt; zeroes a register, nod, and retain nothing.&lt;/p&gt;

&lt;p&gt;You learn assembly by watching state change. So I built a lesson where everything is executable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👉 &lt;a href="https://stackframe-hq.github.io/lesson-1.html" rel="noopener noreferrer"&gt;Try it here — no signup, no installs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live steppers&lt;/strong&gt; for &lt;code&gt;mov&lt;/code&gt;, &lt;code&gt;add&lt;/code&gt;, &lt;code&gt;sub&lt;/code&gt;, and &lt;code&gt;xor&lt;/code&gt; — execute one instruction at a time and watch registers and the zero flag change in real time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A register anatomy widget&lt;/strong&gt; — click RAX / EAX / AX / AH / AL and see which bits of the &lt;em&gt;same physical register&lt;/em&gt; light up. This is the thing every text tutorial fumbles, and it's obvious the moment you see it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A prediction quiz&lt;/strong&gt; — read a short program and commit to what &lt;code&gt;rax&lt;/code&gt; ends up as &lt;em&gt;before&lt;/em&gt; you're allowed to run it (tracing code in your head is the actual skill)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A sandbox with a real mini-assembler&lt;/strong&gt; — it parses &lt;code&gt;mov / add / sub / xor / inc / dec&lt;/code&gt;, decimal or hex immediates, comments, and gives per-line error messages. Three goals get auto-checked as you run&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A stretch puzzle&lt;/strong&gt; — get 42 into &lt;code&gt;rax&lt;/code&gt; without typing a single number. Registers only. If you solve it, you've independently reinvented how compilers multiply by constants&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it's built
&lt;/h2&gt;

&lt;p&gt;The whole lesson is &lt;strong&gt;one HTML file&lt;/strong&gt; — no framework, no build step, no backend. The "emulator" is a small JavaScript interpreter using &lt;code&gt;BigInt&lt;/code&gt; for proper 64-bit register semantics (wraparound behaves correctly — subtract below zero and you get &lt;code&gt;0xffffffffffffffff&lt;/code&gt;, which becomes a teaching moment about two's complement instead of a bug).&lt;/p&gt;

&lt;p&gt;The assembler is ~80 lines: split lines, strip comments, validate mnemonics and operands with friendly per-line errors, then execute against a register-file object. Turns out you don't need much machinery to make assembly &lt;em&gt;feel&lt;/em&gt; alive — you need immediate feedback and a reason to predict before you run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why
&lt;/h2&gt;

&lt;p&gt;This is lesson 1 of a course I'm building (flags &amp;amp; branching, the stack, calling conventions, up through reading real compiler output and crackme-style challenges). The free lessons stay free — I'm gauging interest before building the rest.&lt;/p&gt;

&lt;p&gt;If you learned assembly the hard way, I'd genuinely like your criticism of the teaching approach. And if you can break the sandbox, tell me how — that's the fun part.&lt;/p&gt;

</description>
      <category>assembly</category>
      <category>webdev</category>
      <category>learning</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
