<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ASM on Prepakis Georgios | Kernelstub | Security Researcher</title><link>https://blog.kernelstub.dev/tags/asm/</link><description>Recent content in ASM on Prepakis Georgios | Kernelstub | Security Researcher</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 21 Sep 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.kernelstub.dev/tags/asm/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction to ARM Architecture</title><link>https://blog.kernelstub.dev/posts/introduction-to-arm-architecture/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://blog.kernelstub.dev/posts/introduction-to-arm-architecture/</guid><description>&lt;p&gt;If you&amp;rsquo;ve spent any time around x86 assembly and then gone to look at ARM, the first thing you probably noticed is how much cleaner it feels. That&amp;rsquo;s not an accident. ARM was designed from day one around a philosophy called RISC (Reduced Instruction Set Computer), which trades a huge, irregular menu of complex instructions for a small set of simple, fast, predictable ones. Instead of one instruction doing five things at once (the CISC way, which is how x86 grew up), ARM prefers to do those five things as five simple instructions, each of which the CPU can execute in a single, predictable cycle. This sounds like it should be slower, and instruction-for-instruction it sometimes is, but it makes the hardware simpler, cheaper to build, and dramatically more power efficient, which is exactly why ARM ended up running basically every phone, tablet, and now a growing share of laptops and servers on the planet.&lt;/p&gt;</description></item><item><title>Introduction to x64 ASM</title><link>https://blog.kernelstub.dev/posts/introduction-to-x64-asm/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://blog.kernelstub.dev/posts/introduction-to-x64-asm/</guid><description>&lt;h2 id="1-introduction-to-assembly-and-x64-architecture"&gt;1. Introduction to Assembly and x64 Architecture&lt;/h2&gt;
&lt;h3 id="what-is-assembly-language"&gt;What is Assembly Language?&lt;/h3&gt;
&lt;p&gt;Every program you&amp;rsquo;ve ever run, whether it&amp;rsquo;s a shell script, a Python interpreter, or a AAA game engine, eventually gets reduced to a stream of raw binary instructions that a CPU can execute directly. Assembly language is the thin, human-readable layer sitting right on top of that binary stream. Each assembly instruction maps almost one-to-one to a single machine instruction, so when you write &lt;code&gt;mov rax, rbx&lt;/code&gt;, you&amp;rsquo;re really just writing a mnemonic for a specific sequence of bits that tells the processor &amp;ldquo;copy the contents of one register into another.&amp;rdquo; There&amp;rsquo;s no compiler doing clever things behind your back, no garbage collector, no runtime. What you write is (almost) exactly what runs.&lt;/p&gt;</description></item></channel></rss>