<story><title>Let’s Learn x86-64 Assembly: Part 0 – Setup and First Steps</title><url>https://gpfault.net/posts/asm-tut-0.txt.html</url></story><parent_chain><item><author>simias</author><text>It&amp;#x27;s very common for people to learn assembly using x86(-64) but this ISA is so messy, complicated and layered that it always seems like the bad choice to me. It&amp;#x27;s like teaching an intro programming course using C++, I understand why it&amp;#x27;s practical but it seems like it will be more trouble than it&amp;#x27;s worth.&lt;p&gt;I&amp;#x27;d probably recommend getting some ARM or ARM64 board and starting with this, most of the concepts will carry over to other assemblies anyway. Writing a simple CPU emulator for some simple architecture and then coding on it can also be a great teaching experience, if a little more involved.&lt;p&gt;I find this tutorial a bit oddly structured too, but that may be because I&amp;#x27;m from un*x world and I don&amp;#x27;t have the Windows mindset. It basically goes from &amp;quot;int3 ret&amp;quot; to &amp;quot;The PE Format and DLL Imports&amp;quot;. That seems like quite the jump, and not necessarily super relevant to learning ASM IMO.</text></item></parent_chain><comment><author>raxxorrax</author><text>Kind of disagree, but just because the literature for ASM for x86 is that good. What I am missing most of the time is declaration of the platform. In most cases &amp;quot;learning ASM&amp;quot; means x86&amp;#x2F;Linux or x64&amp;#x2F;Linux, this time it is x64&amp;#x2F;Windows. Because you will quickly get to a point where you want to do system calls and that can vary from platform to platform.&lt;p&gt;If you like an easy instruction set and don&amp;#x27;t care about platform specific syscalls, I would recommend an 8bit µC. An Arduino for example.</text></comment>
<story><title>Let’s Learn x86-64 Assembly: Part 0 – Setup and First Steps</title><url>https://gpfault.net/posts/asm-tut-0.txt.html</url></story><parent_chain><item><author>simias</author><text>It&amp;#x27;s very common for people to learn assembly using x86(-64) but this ISA is so messy, complicated and layered that it always seems like the bad choice to me. It&amp;#x27;s like teaching an intro programming course using C++, I understand why it&amp;#x27;s practical but it seems like it will be more trouble than it&amp;#x27;s worth.&lt;p&gt;I&amp;#x27;d probably recommend getting some ARM or ARM64 board and starting with this, most of the concepts will carry over to other assemblies anyway. Writing a simple CPU emulator for some simple architecture and then coding on it can also be a great teaching experience, if a little more involved.&lt;p&gt;I find this tutorial a bit oddly structured too, but that may be because I&amp;#x27;m from un*x world and I don&amp;#x27;t have the Windows mindset. It basically goes from &amp;quot;int3 ret&amp;quot; to &amp;quot;The PE Format and DLL Imports&amp;quot;. That seems like quite the jump, and not necessarily super relevant to learning ASM IMO.</text></item></parent_chain><comment><author>roel_v</author><text>One of the main reasons for learning assembly today is to do reverse engineering, for which the plumbing is just as important as the concepts.</text></comment>