<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://liungrin.info" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Andrei Liungrin</title>
 <link>http://liungrin.info</link>
 <description>Andrei Liungrin's low-level blog</description>
 <language>en</language>

<item>
 <title>Lock-free programming with LDREX/STREX on ARMv7: A block memory allocator</title>
 <link>http://liungrin.info/ldrex-malloc.html</link>
 <description>&lt;p&gt;In this post, I will demonstrate how to use ARM's &lt;code&gt;LDREX/STREX&lt;/code&gt; instructions to
write re-entrant thread-safe code without relying on mutexes or disabling
interrupts. Along the way, I will write a simple block memory allocator with a
run-time adjustable block size and unit-test it under QEMU using ARM
semihosting. I will also briefly touch on GCC inline assembly.&lt;/p&gt;
</description>
 <pubDate>21 Oct 2025 21:26:47 +0000</pubDate>
 <guid isPermaLink="false">2 at http://liungrin.info</guid>
</item>

<item>
 <title>Let's write a disassembler for ARMv6 in C</title>
 <link>http://liungrin.info/objdump.html</link>
 <description>&lt;p&gt;In this post I will show how to recreate &lt;code&gt;objdump&lt;/code&gt; from binutils for Armv6-M.
You will not only learn to decode Thumb instructions, but also to understand
their semantics and to navigate Arm reference manuals.&lt;/p&gt;
</description>
 <pubDate>9 Sep 2025 21:43:21 +0000</pubDate>
 <guid isPermaLink="false">1 at http://liungrin.info</guid>
</item>

</channel>
</rss>

