# assembler

Published articles for assembler.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## WebAssembly interpreter performance depends on the runtime, not just the code pattern

DevFeed: [WebAssembly interpreter performance depends on the runtime, not just the code pattern](<https://devfeed.tech/articles/the-value-of-a-performance-oracle-35035.md>)

Original publisher: [Read original article](<https://wingolog.org/archives/2026/04/07/the-value-of-a-performance-oracle>)

Author: Andy Wingo

Published: 2026-04-07T12:49:39Z

Content type: article

Language: en

Sources: [wingolog](<https://devfeed.tech/sources/wingolog.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [V8](<https://devfeed.tech/topics/v8.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>)

Tags: [assembler](<https://devfeed.tech/tags/assembler.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [oracles](<https://devfeed.tech/tags/oracles.md>), [performance](<https://devfeed.tech/tags/performance.md>), [performance-oracles](<https://devfeed.tech/tags/performance-oracles.md>), [raven](<https://devfeed.tech/tags/raven.md>), [rust](<https://devfeed.tech/tags/rust.md>), [tail-calls](<https://devfeed.tech/tags/tail-calls.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [wasmtime](<https://devfeed.tech/tags/wasmtime.md>), [wastrel](<https://devfeed.tech/tags/wastrel.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

The article revisits a comparison of switch-based and tail-calling bytecode interpreters. Its measurements confirm earlier native and Wasmtime results but report that Wastrel substantially reduces the apparent WebAssembly penalty, suggesting that the poor performance is runtime-specific rather than inherent to WebAssembly.

### Source excerpt

Over on his excellent blog, Matt Keeter posts some results from having ported a bytecode virtual machine to tail-calling style. He finds that his tail-calling interpreter written in Rust beats his switch-based interpreter, and even beats hand-coded assembly on some platforms. He also compares tail-calling versus switch-based interpreters on WebAssembly, and concludes that performance of tail-calling interpreters in Wasm is terrible: 1.2x slower on Firefox, 3.7x slower on Chrome, and 4.6x slower in wasmtime. I guess patterns which generate good assembly don't map well to the WASM stack machine, and the JITs aren't smart enough to lower it to optimal machine code. In this article, I would like to argue the opposite: patterns that generate good assembly map just fine to the Wasm stack machine, and the underperformance of V8, SpiderMonkey, and Wasmtime is an accident. some numbers I re-ran Matt's experiment locally on my x86-64 machine (AMD Ryzen Threadripper PRO 5955WX). I tested three toolchains: Compiled natively via cargo / rustc Compiled to WebAssembly, then run with Wasmtime Compiled to WebAssembly, then run with Wastrel For each of these toolchains, I tested Raven as implemented in Rust in both "switch-based" and "tail-calling" modes. Additionally, Matt has a Raven implementation written directly in assembly; I test this as well, for the native toolchain. All results use nightly/git toolchains from 7 April 2026. My results confirm Matt's for the native and wasmtime toolchains, but wastrel puts them in context: We can read this chart from left to right: a switch-based interpreter written in Rust is 1.5x slower than a tail-calling interpreter, and the tail-calling interpreter just about reaches the speed of hand-written assembler. (Testing on AArch64, Matt even sees the tail-calling interpreter beating his hand-written assembler.) Then moving to WebAssembly run using Wasmtime, we see that Wasmtime takes 4.3x as much time to run the switch-based interpreter, compare

## Long branches in compilers, assemblers, and linkers

DevFeed: [Long branches in compilers, assemblers, and linkers](<https://devfeed.tech/articles/long-branches-in-compilers-assemblers-and-linkers-31133.md>)

Original publisher: [Read original article](<https://maskray.me/blog/long-branches-in-compilers-assemblers-and-linkers>)

Published: 2026-01-25T08:00:00Z

Content type: article

Language: en

Sources: [MaskRay](<https://devfeed.tech/sources/maskray.md>)

Topics: [toolchain](<https://devfeed.tech/topics/toolchain.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [architectures](<https://devfeed.tech/tags/architectures.md>), [article](<https://devfeed.tech/tags/article.md>), [assembler](<https://devfeed.tech/tags/assembler.md>), [binutils](<https://devfeed.tech/tags/binutils.md>), [compilers](<https://devfeed.tech/tags/compilers.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [linker](<https://devfeed.tech/tags/linker.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>)

### AI overview

This article explains how compilers, assemblers, and linkers handle branch instructions whose PC-relative targets exceed the supported range. It describes the division of responsibility across toolchain stages and compares branch-range limitations across architectures, including AArch32, AArch64, and LoongArch.

### Source excerpt

Branch instructions on most architectures use PC-relative addressing with a limited range. When the target is too far away, the branch becomes "out of range" and requires special handling. Consider a large binary where main() at address 0x10000 calls foo() at address 0x8010000-over 128MiB away. On AArch64, the bl instruction can only reach ±128MiB, so this call cannot be encoded directly. Without proper handling, the linker would fail with an error like "relocation out of range." The toolchain must handle this transparently to produce correct executables. This article explores how compilers, assemblers, and linkers work together to solve the long branch problem. Compiler (IR to assembly): Handles branches within a function that exceed the range of conditional branch instructions Assembler (assembly to relocatable file): Handles branches within a section where the distance is known at assembly time Linker: Handles cross-section and cross-object branches discovered during final layout

## 2025年总结

DevFeed: [2025年总结](<https://devfeed.tech/articles/2025-31119.md>)

Original publisher: [Read original article](<https://maskray.me/blog/2025-12-31-summary>)

Published: 2025-12-31T08:00:00Z

Content type: article

Language: zh

Sources: [MaskRay](<https://devfeed.tech/sources/maskray.md>)

Topics: [toolchain](<https://devfeed.tech/topics/toolchain.md>), [LLVM](<https://devfeed.tech/topics/llvm.md>), [patches](<https://devfeed.tech/topics/patches.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [assembler](<https://devfeed.tech/tags/assembler.md>), [blogging](<https://devfeed.tech/tags/blogging.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [https-maskray-me-blog-tags-assembler](<https://devfeed.tech/tags/https-maskray-me-blog-tags-assembler.md>), [linux](<https://devfeed.tech/tags/linux.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [patches](<https://devfeed.tech/tags/patches.md>), [summary](<https://devfeed.tech/tags/summary.md>)

### AI overview

A 2025 personal summary covering reduced open-source involvement, 18 blog posts, work on LLVM's integrated assembler and ELF specifications, Linux kernel contributions, ccls, binutils reports, and travel.

### Source excerpt

TODO 一如既往，主要在工具链领域耕耘。但由于工作忙碌在open source社区投入的时间减少了。 Blogging 不包括这篇总结，一共写了18篇文章。

## GSoC 2018 - Project BTRFS Boot

DevFeed: [GSoC 2018 - Project BTRFS Boot](<https://devfeed.tech/articles/gsoc-2018-project-btrfs-boot-32800.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/gsoc-2018-weeks-1-2/>)

Published: 2018-05-29T00:00:00Z

Content type: article

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [btrfs](<https://devfeed.tech/topics/btrfs.md>), [ReactOS](<https://devfeed.tech/topics/reactos.md>), [boot](<https://devfeed.tech/topics/boot.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [assembler](<https://devfeed.tech/tags/assembler.md>), [bootloader](<https://devfeed.tech/tags/bootloader.md>), [btrfs](<https://devfeed.tech/tags/btrfs.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [free](<https://devfeed.tech/tags/free.md>), [gsoc](<https://devfeed.tech/tags/gsoc.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [project](<https://devfeed.tech/tags/project.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>)

### AI overview

A ReactOS GSoC 2018 progress report describes work to add installation and boot support for BTRFS partitions. During the first two weeks, the author explored setup utility internals, enabled BTRFS formatting and installation, and tested the FreeLdr bootloader with Windows XP and Windows 2003, which still had some bugs.

### Source excerpt

Introduction Hi all! My name is Victor Perevertkin and I am the only GSoC student in ReactOS project this year :) This is my first GSoC and I was very excited when I realized that I was selected and there will be four mentors for me. I will definitely learn a lot from this internship! My project is both simple and complicated. I want to add to ReactOS an option to install on and boot from BTRFS partitions.

## Learning assembler on Linux

DevFeed: [Learning assembler on Linux](<https://devfeed.tech/articles/learning-assembler-on-linux-35430.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/learning-assembler-on-linux/>)

Author: Graham King

Published: 2014-08-23T03:49:14Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Assembly](<https://devfeed.tech/topics/assembly.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [x86](<https://devfeed.tech/topics/x86.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [assembler](<https://devfeed.tech/tags/assembler.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [linker](<https://devfeed.tech/tags/linker.md>), [linux](<https://devfeed.tech/tags/linux.md>), [linux-kernel](<https://devfeed.tech/tags/linux-kernel.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [x86](<https://devfeed.tech/tags/x86.md>), [x86-64](<https://devfeed.tech/tags/x86-64.md>)

### AI overview

A programmer documents learning assembly on Linux, comparing AT&T and Intel syntax, assemblers, and 32-bit versus 64-bit targets. The article also explains entry points, linker behavior, system calls, and explicit program termination.

### Source excerpt

"Diving into the nitty-gritty of assembly: A programmer's adventure!"

## Baby steps in x86 assembly

DevFeed: [Baby steps in x86 assembly](<https://devfeed.tech/articles/baby-steps-in-x86-assembly-38925.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2013-07-16-baby-steps-in-x86-assembly>)

Author: Marek

Published: 2013-07-15T22:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Assembly](<https://devfeed.tech/topics/assembly.md>), [x86](<https://devfeed.tech/topics/x86.md>), [C](<https://devfeed.tech/topics/c.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Unix](<https://devfeed.tech/topics/unix.md>)

Tags: [assembler](<https://devfeed.tech/tags/assembler.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [linux](<https://devfeed.tech/tags/linux.md>), [unix](<https://devfeed.tech/tags/unix.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

A hands-on introduction to x86 assembly that explains stack behavior, AT&T syntax, Unix calling conventions, simple functions, disassembly, and the operation of call and ret. It also introduces passing function parameters under cdecl and connecting assembly with C.

### Source excerpt

Baby steps in x86 assembly It's a bit embarrassing but I never fully understood how the stack in x86 works. Sure, I know the stack grows downwards, the top is saved in and points somewhere. But I didn't know exactly why. During Hacker School I wrote a bit of assembly that finally gave me a better intuition, maybe it can help you as well. Prerequisites I'm assuming you already know basic assembler instructions, you're aware of registers and have a clue about the stack.

## Interview 3: Magnus Olsen

DevFeed: [Interview 3: Magnus Olsen](<https://devfeed.tech/articles/interview-3-magnus-olsen-33074.md>)

Original publisher: [Read original article](<https://reactos.org/interviews/magnus-olsen/>)

Published: 2006-11-28T00:00:00Z

Content type: article

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [ReactOS](<https://devfeed.tech/topics/reactos.md>), [Operating system](<https://devfeed.tech/topics/operating-system.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Code](<https://devfeed.tech/topics/code.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [DirectX](<https://devfeed.tech/topics/directx.md>)

Tags: [assembler](<https://devfeed.tech/tags/assembler.md>), [developers](<https://devfeed.tech/tags/developers.md>), [directx](<https://devfeed.tech/tags/directx.md>), [free](<https://devfeed.tech/tags/free.md>), [interview](<https://devfeed.tech/tags/interview.md>), [interviews](<https://devfeed.tech/tags/interviews.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [project](<https://devfeed.tech/tags/project.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

An interview with ReactOS developer Magnus Olsen about joining the project, its goal of Windows compatibility, and his contributions, including assembler code and DirectX headers.

### Source excerpt

Magnus OlsenInterview with Magnus Olsen by Klemens Friedl This is the third in a series of interviews with ReactOS developers. In a few weeks we will have a nice collection showcasing the talent of the people behind ReactOS. Magnus Olsen, born in Skarholmen, Sweden in 1976 been involved with ReactOS since year 2002 and contributed to a lot of different parts throughout the project since that time. StartHow did you get involved with ReactOS?