# Assembly

Published articles for Assembly.

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

## FreeBSD Foundation Intern Jim Huang Chen on Raspberry Pi Support and Open Source

DevFeed: [FreeBSD Foundation Intern Jim Huang Chen on Raspberry Pi Support and Open Source](<https://devfeed.tech/articles/freebsd-foundation-intern-jim-huang-chen-on-raspberry-pi-support-and-open-source-38860.md>)

Original publisher: [Read original article](<https://freebsdfoundation.org/blog/freebsd-foundation-intern-jim-huang-chen-on-raspberry-pi-support-and-open-source/>)

Author: Florine Kamdem

Published: 2026-08-21T13:29:17Z

Content type: article

Language: en

Sources: [FreeBSD Foundation](<https://devfeed.tech/sources/freebsd-foundation.md>)

Topics: [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [blog](<https://devfeed.tech/tags/blog.md>), [c](<https://devfeed.tech/tags/c.md>), [freebsd](<https://devfeed.tech/tags/freebsd.md>), [google-summer-of-code](<https://devfeed.tech/tags/google-summer-of-code.md>), [internship](<https://devfeed.tech/tags/internship.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [programming](<https://devfeed.tech/tags/programming.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [student](<https://devfeed.tech/tags/student.md>), [university](<https://devfeed.tech/tags/university.md>)

### AI overview

The article profiles FreeBSD Foundation intern Jim Huang Chen, describing his path into systems programming and his summer work contributing to Raspberry Pi support in the FreeBSD codebase. His projects included porting Raspberry Pi Imager to FreeBSD.

### Source excerpt

When Jim Huang Chen began his internship with the FreeBSD Foundation, he was only finishing his first year as a Software Engineering student at the University of Waterloo. A few months later, he had spent the summer working inside the FreeBSD codebase, contributing to Raspberry Pi support, learning from longtime developers, and gaining a much [...] The post FreeBSD Foundation Intern Jim Huang Chen on Raspberry Pi Support and Open Source first appeared on FreeBSD Foundation.

## Compiling to intermediate representation: Write yourself a compiler, Part III

DevFeed: [Compiling to intermediate representation: Write yourself a compiler, Part III](<https://devfeed.tech/articles/compiling-to-intermediate-representation-write-yourself-a-compiler-part-iii-38039.md>)

Original publisher: [Read original article](<https://nurkiewicz.com/2026/08/compiling-to-intermediate-representation-write-yourself-a-compiler.html>)

Published: 2026-08-16T22:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Nurkiewicz around Java and concurrency](<https://devfeed.tech/sources/tomasz-nurkiewicz-around-java-and-concurrency.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [virtual machines](<https://devfeed.tech/topics/virtual-machines.md>), [Code](<https://devfeed.tech/topics/code.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [go](<https://devfeed.tech/tags/go.md>), [interpreter](<https://devfeed.tech/tags/interpreter.md>), [ir](<https://devfeed.tech/tags/ir.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [python](<https://devfeed.tech/tags/python.md>), [virtual-machines](<https://devfeed.tech/tags/virtual-machines.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>), [writing-compiler](<https://devfeed.tech/tags/writing-compiler.md>)

### AI overview

This tutorial explains how a small interpreter project evolves into a compiler by emitting intermediate representation (IR). It contrasts interpreted and compiled languages, describes bytecode and virtual machines, and uses Java and WebAssembly examples to show how IR instructions are executed.

### Source excerpt

It's time to dive a bit deeper and abandon the naive realm of interpreters. Our tiny little project can finally call itself a compiler. In this part we'll emit so-called intermediate representation instead of just evaluating and running the source code as-is. OK, what does this all mean?

## A deep dive into SmallVector::push\_back

DevFeed: [A deep dive into SmallVector::push\_back](<https://devfeed.tech/articles/a-deep-dive-into-smallvector-push-back-31123.md>)

Original publisher: [Read original article](<https://maskray.me/blog/a-deep-dive-into-smallvector-push-back>)

Published: 2026-06-27T07:00:00Z

Content type: article

Language: en

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

Topics: [LLVM](<https://devfeed.tech/topics/llvm.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [clang](<https://devfeed.tech/topics/clang.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [gcc](<https://devfeed.tech/topics/gcc.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [clang](<https://devfeed.tech/tags/clang.md>), [codegen](<https://devfeed.tech/tags/codegen.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article examines an LLVM SmallVector::push_back optimization for approximately trivially copyable element types. It explains how tail-calling the slow growth path reduces the fast path from 14 to 7 instructions and avoids callee-saved registers, while noting tradeoffs for out-of-line calls and overall build size.

### Source excerpt

tl;dr This blog post describes a recent SmallVector::push_back optimization for approximately trivially copyable element types. SmallVector is LLVM's most-used container, and push_back its hot operation. For the trivially-copyable specialization the fast path should be fast. 1 2 3 #include <llvm/ADT/SmallVector.h> void f(llvm::SmallVectorImpl<int> &v, int x) { v.push_back(x); } clang -S --target=x86_64 -O2 -DNDEBUG a.cc generates: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 push rbp # callee-saved spills + a stack realignment, push rbx # all on the fast path push rax mov eax, [rdi + 8] # size cmp eax, [rdi + 12] # vs capacity jae .Lgrow .Lstore: # reached from the fast path AND from .Lgrow mov rcx, [rdi] mov [rcx + rax*4], esi inc dword ptr [rdi + 8] add rsp, 8 pop rbx pop rbp ret .Lgrow: mov rbx, rdi # keep `this`/`x` alive across the call mov ebp, esi call SmallVectorBase<unsigned>::grow_pod ... jmp .Lstore

## New chip could help tiny robots traverse complex environments

DevFeed: [New chip could help tiny robots traverse complex environments](<https://devfeed.tech/articles/new-chip-could-help-tiny-robots-traverse-complex-environments-37974.md>)

Original publisher: [Read original article](<https://news.mit.edu/2026/new-chip-could-help-tiny-robots-traverse-complex-environments-0623>)

Author: Adam Zewe | MIT News

Published: 2026-06-23T04:00:00Z

Content type: news

Language: en

Sources: [MIT AI News](<https://devfeed.tech/sources/mit-ai-news.md>)

Topics: [Hardware](<https://devfeed.tech/topics/hardware.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [3D](<https://devfeed.tech/topics/3d.md>), [navigation](<https://devfeed.tech/topics/navigation.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [Green Software](<https://devfeed.tech/topics/green-software.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [aeronautical-and-astronautical-engineering](<https://devfeed.tech/tags/aeronautical-and-astronautical-engineering.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [augmented-and-virtual-reality](<https://devfeed.tech/tags/augmented-and-virtual-reality.md>), [autonomous-vehicles](<https://devfeed.tech/tags/autonomous-vehicles.md>), [computer-chips](<https://devfeed.tech/tags/computer-chips.md>), [computer-science-and-technology](<https://devfeed.tech/tags/computer-science-and-technology.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [electrical-engineering-and-computer-science-eecs](<https://devfeed.tech/tags/electrical-engineering-and-computer-science-eecs.md>), [energy](<https://devfeed.tech/tags/energy.md>), [energy-efficiency](<https://devfeed.tech/tags/energy-efficiency.md>), [gleanmer](<https://devfeed.tech/tags/gleanmer.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [inside](<https://devfeed.tech/tags/inside.md>), [laboratory-for-information-and-decision-systems-lids](<https://devfeed.tech/tags/laboratory-for-information-and-decision-systems-lids.md>), [low-power](<https://devfeed.tech/tags/low-power.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [memory](<https://devfeed.tech/tags/memory.md>), [mit-schwarzman-college-of-computing](<https://devfeed.tech/tags/mit-schwarzman-college-of-computing.md>), [national-science-foundation-nsf](<https://devfeed.tech/tags/national-science-foundation-nsf.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [peter-zhi-xuan-li](<https://devfeed.tech/tags/peter-zhi-xuan-li.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [research](<https://devfeed.tech/tags/research.md>), [research-laboratory-of-electronics](<https://devfeed.tech/tags/research-laboratory-of-electronics.md>), [robotics](<https://devfeed.tech/tags/robotics.md>), [school-of-engineering](<https://devfeed.tech/tags/school-of-engineering.md>), [sertac-karaman](<https://devfeed.tech/tags/sertac-karaman.md>), [system-on-a-chip](<https://devfeed.tech/tags/system-on-a-chip.md>), [trajectory-planning](<https://devfeed.tech/tags/trajectory-planning.md>), [vivienne-sze](<https://devfeed.tech/tags/vivienne-sze.md>), [zih-sing-fu](<https://devfeed.tech/tags/zih-sing-fu.md>)

### AI overview

MIT researchers developed a low-power chip that combines an efficient mapping algorithm with dedicated hardware to generate detailed 3D maps for robot navigation in real time. The system-on-a-chip uses about 6 milliwatts and is intended for tiny autonomous robots and other battery-limited devices.

### Source excerpt

Researchers combined an efficient algorithm with dedicated hardware to rapidly generate 3D maps for navigation using minimal memory and power.

## 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

## AI-generated ARM assembly optimization reduces instruction count eightfold in a C++ string-counting test

DevFeed: [AI-generated ARM assembly optimization reduces instruction count eightfold in a C++ string-counting test](<https://devfeed.tech/articles/can-your-ai-rewrite-your-code-in-assembly-29399.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/04/05/can-your-ai-rewrite-your-code-in-assembly/>)

Author: Daniel Lemire

Published: 2026-04-05T21:16:14Z

Content type: opinion

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Assembly](<https://devfeed.tech/topics/assembly.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [claude](<https://devfeed.tech/tags/claude.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [prompting](<https://devfeed.tech/tags/prompting.md>)

### AI overview

The article describes an experiment using Grok and Claude to repeatedly optimize an ARM assembly function that counts a character across strings. On random strings of up to 1 kilobyte, the optimized versions reduced instructions by a factor of eight and achieved similar running-time reductions, though the author notes that the code was not closely examined for mistakes. The best version could be rewritten in C using SIMD intrinsics, so assembly provided no benefit in this case.

### Source excerpt

Suppose you have several strings and you want to count the number of instances of the character ! in your strings. In C++, you might solve the problem as follows if you are an old-school programmer. size_t c = 0; for (const auto &str : strings) { c += std::count(str.begin(), str.end(), '!'); } You can ... Continue reading Can your AI rewrite your code in assembly?

## Text formats are everywhere. Why?

DevFeed: [Text formats are everywhere. Why?](<https://devfeed.tech/articles/text-formats-are-everywhere-why-29394.md>)

Original publisher: [Read original article](<https://lemire.me/blog/2026/03/05/text-formats-are-everywhere-why/>)

Author: Daniel Lemire

Published: 2026-03-05T14:40:58Z

Content type: opinion

Language: en

Sources: [Daniel Lemire](<https://devfeed.tech/sources/daniel-lemire.md>)

Topics: [Internet](<https://devfeed.tech/topics/internet.md>), [data](<https://devfeed.tech/topics/data.md>), [Web](<https://devfeed.tech/topics/web.md>), [JSON](<https://devfeed.tech/topics/json.md>), [HTML](<https://devfeed.tech/topics/html.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Code](<https://devfeed.tech/topics/code.md>), [GeoJSON](<https://devfeed.tech/topics/geojson.md>), [SVG](<https://devfeed.tech/topics/svg.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [html](<https://devfeed.tech/tags/html.md>), [internet](<https://devfeed.tech/tags/internet.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [json](<https://devfeed.tech/tags/json.md>), [maps](<https://devfeed.tech/tags/maps.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [web](<https://devfeed.tech/tags/web.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This commentary explains why text formats remain dominant across Internet technologies and data exchange. It argues that text is often efficient in practice, easier to transform, search, quote, version, and inspect, while noting that binary formats can be preferable in some performance-sensitive cases. It also emphasizes parsing and validating data received from remote sources.

### Source excerpt

The Internet relies on text formats. Thus, we spend a lot of time producing and consuming data encoded in text. Your web pages are HTML. The code running in them is JavaScript, sent as text (JavaScript source), not as already-parsed code. Your emails, including their attachments, are sent as text (your binary files are sent ... Continue reading Text formats are everywhere. Why?

## Frankenwine: Multiple personas in a Wine process

DevFeed: [Frankenwine: Multiple personas in a Wine process](<https://devfeed.tech/articles/frankenwine-multiple-personas-in-a-wine-process-20510.md>)

Original publisher: [Read original article](<https://nullprogram.com/blog/2026/01/19/>)

Published: 2026-01-19T21:51:38Z

Content type: article

Language: en

Sources: [Chris Wellons](<https://devfeed.tech/sources/chris-wellons.md>)

Topics: [WINE](<https://devfeed.tech/topics/wine.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [C](<https://devfeed.tech/topics/c.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [git](<https://devfeed.tech/tags/git.md>), [linux](<https://devfeed.tech/tags/linux.md>), [processes](<https://devfeed.tech/tags/processes.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>), [win32](<https://devfeed.tech/tags/win32.md>), [wine](<https://devfeed.tech/tags/wine.md>), [x86](<https://devfeed.tech/tags/x86.md>), [x86-64](<https://devfeed.tech/tags/x86-64.md>)

### AI overview

This article describes building a Windows binary that behaves as a native pkg-config program on Windows but adopts a Linux-program persona when run under Wine. It detects Wine, invokes Linux system calls directly through x86-64 inline assembly, and applies the approach to u-config as a cross-toolchain pkg-config implementation.

### Source excerpt

I came across a recent article on making Linux system calls from a Wine process. Windows programs running under Wine are still normal Linux processes and may interact with the Linux kernel like any other process. None of this was surprising, and the demonstration works just as I expect. Still, it got the wheels spinning and I realized an almost practical application: build my pkg-config implementation such that on Windows pkg-config.exe behaves as a native pkg-config, but when run under Wine this same binary takes the persona of a Linux program and becomes a cross toolchain pkg-config, bypassing Win32 and talking directly with the Linux kernel. Cosmopolitan Libc cleverly does this out-of-the-box, but in this article we'll mash together a couple existing sources with a bit of glue. The results are in the merge-demo branch of u-config, and took hardly any work: $ git show --stat ... main_linux_amd64.c | 8 ++--- main_wine.c | 101 +++++++++++++++++++++++++++++++++++++++++ src/linux_noarch.c | 16 ++++----- src/u-config.c | 1 + 4 files changed, 114 insertions(+), 12 deletions(-) A platform layer, main_wine.c, is a merge of two existing platform layers, one of which required unavoidable tweaks. We'll get to those details in a moment. First we'll need to detect if we're running under Wine, and the best solution I found was to locate ntdll!wine_get_version. If this function exists, we're in Wine. That works out to a pretty one-liner because ntdll.dll is already loaded: bool running_on_wine() { return GetProcAddress(GetModuleHandleA("ntdll"), "wine_get_version"); } An x86-64 Linux syscall wrapper with thorough inline assembly: ptrdiff_t syscall3(int n, ptrdiff_t a, ptrdiff_t b, ptrdiff_t c) { ptrdiff_t r; asm volatile ( "syscall" : "=a"(r) : "a"(n), "D"(a), "S"(b), "d"(c) : "rcx", "r11", "memory" ); return r; } ptrdiff_t write(int fd, void *buf, ptrdiff_t len) { return syscall3(SYS_write, fd, (ptrdiff_t)buf, len); } I'd normally use long for all these integers because Linux i

## IOCCC/mullender revisited, position-independent code, shellcode

DevFeed: [IOCCC/mullender revisited, position-independent code, shellcode](<https://devfeed.tech/articles/ioccc-mullender-revisited-position-independent-code-shellcode-20545.md>)

Original publisher: [Read original article](<https://yurichev.com/blog/PIC/>)

Published: 2026-01-04T23:00:00Z

Content type: tutorial

Language: en

Sources: [Dennis Yurichev](<https://devfeed.tech/sources/dennis-yurichev.md>)

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

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [code](<https://devfeed.tech/tags/code.md>), [linux](<https://devfeed.tech/tags/linux.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This article revisits an IOCCC entry and explains position-independent code using arrays placed in executable sections. It demonstrates Linux x64 and ARM64 assembly examples, including shellcode-related syscall and PIC techniques, and describes code that can run across x64 and ARM64.

### Source excerpt

IOCCC/mullender revisited, position-independent code, shellcode

## TP-Link Tapo C200: Hardcoded Keys, Buffer Overflows and Privacy in the Era of AI Assisted Reverse Engineering

DevFeed: [TP-Link Tapo C200: Hardcoded Keys, Buffer Overflows and Privacy in the Era of AI Assisted Reverse Engineering](<https://devfeed.tech/articles/tp-link-tapo-c200-hardcoded-keys-buffer-overflows-and-privacy-in-the-era-of-ai-assisted-reverse-engineering-41272.md>)

Original publisher: [Read original article](<https://www.evilsocket.net/2025/12/18/TP-Link-Tapo-C200-Hardcoded-Keys-Buffer-Overflows-and-Privacy-in-the-Era-of-AI-Assisted-Reverse-Engineering/>)

Author: Simone Margaritelli

Published: 2025-12-17T23:00:00Z

Content type: article

Language: en

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

Topics: [Reverse Engineering](<https://devfeed.tech/topics/reverse-engineering.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Security](<https://devfeed.tech/topics/security.md>), [Embedded Systems](<https://devfeed.tech/topics/embedded-systems.md>), [Android](<https://devfeed.tech/topics/android.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-assisted-reverse-engineering](<https://devfeed.tech/tags/ai-assisted-reverse-engineering.md>), [android](<https://devfeed.tech/tags/android.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [aws](<https://devfeed.tech/tags/aws.md>), [china](<https://devfeed.tech/tags/china.md>), [cve](<https://devfeed.tech/tags/cve.md>), [cve-2025-14299](<https://devfeed.tech/tags/cve-2025-14299.md>), [cve-2025-14300](<https://devfeed.tech/tags/cve-2025-14300.md>), [cve-2025-8065](<https://devfeed.tech/tags/cve-2025-8065.md>), [cybersecurity](<https://devfeed.tech/tags/cybersecurity.md>), [embedded-devices](<https://devfeed.tech/tags/embedded-devices.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [exploit](<https://devfeed.tech/tags/exploit.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [ghidra](<https://devfeed.tech/tags/ghidra.md>), [ghidramcp](<https://devfeed.tech/tags/ghidramcp.md>), [hardcoded-credentials](<https://devfeed.tech/tags/hardcoded-credentials.md>), [integer-overflow](<https://devfeed.tech/tags/integer-overflow.md>), [iot](<https://devfeed.tech/tags/iot.md>), [iot-security](<https://devfeed.tech/tags/iot-security.md>), [memory](<https://devfeed.tech/tags/memory.md>), [mips](<https://devfeed.tech/tags/mips.md>), [privacy](<https://devfeed.tech/tags/privacy.md>), [re](<https://devfeed.tech/tags/re.md>), [reverse-engineering](<https://devfeed.tech/tags/reverse-engineering.md>), [reversing](<https://devfeed.tech/tags/reversing.md>), [security](<https://devfeed.tech/tags/security.md>), [security-research](<https://devfeed.tech/tags/security-research.md>), [security-vulnerabilities](<https://devfeed.tech/tags/security-vulnerabilities.md>), [tapo-c200](<https://devfeed.tech/tags/tapo-c200.md>), [tapo-camera](<https://devfeed.tech/tags/tapo-camera.md>), [tp-link](<https://devfeed.tech/tags/tp-link.md>), [tplink](<https://devfeed.tech/tags/tplink.md>), [vulnerability-research](<https://devfeed.tech/tags/vulnerability-research.md>)

### AI overview

This article describes an AI-assisted reverse-engineering investigation of TP-Link Tapo C200 camera firmware. The author reports finding several security vulnerabilities affecting about 25,000 devices directly exposed on the internet, and discusses the tools and process used.

### Source excerpt

Hi friends and welcome to the last post for this year! Whenever someone asks me how to get started with reverse engineering, I always giv

## Java Hello World, LLVM Edition

DevFeed: [Java Hello World, LLVM Edition](<https://devfeed.tech/articles/java-hello-world-llvm-edition-23022.md>)

Original publisher: [Read original article](<https://www.javaadvent.com/2025/12/java-hello-world-llvm-edition.html>)

Author: James Hamilton

Published: 2025-12-07T02:02:37Z

Content type: tutorial

Language: en

Sources: [Java Advent Calendar](<https://devfeed.tech/sources/java-advent-calendar.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [LLVM](<https://devfeed.tech/topics/llvm.md>), [API](<https://devfeed.tech/topics/api.md>), [JIT](<https://devfeed.tech/topics/jit.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [api](<https://devfeed.tech/tags/api.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [compilers](<https://devfeed.tech/tags/compilers.md>), [java](<https://devfeed.tech/tags/java.md>), [java-advent](<https://devfeed.tech/tags/java-advent.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [jit](<https://devfeed.tech/tags/jit.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [llvm](<https://devfeed.tech/tags/llvm.md>)

### AI overview

This tutorial shows how to use Java's Foreign Function & Memory API to call the LLVM C API, generate LLVM IR for a Hello World program, and JIT-compile it to native code. It also introduces LLVM, its IR representations, and local installation on Ubuntu or Debian.

### Source excerpt

After exploring Java bytecode in previous years (2022, 2023, 2024), this year we'll take an unexpected detour for a Java advent: instead of generating Java bytecode, we'll use Java to build and execute LLVM IR, the intermediate language behind compilers like clang. Using Java's Foreign Function & Memory (FFM) API, we'll call the LLVM C [...] The post Java Hello World, LLVM Edition appeared first on JVM Advent.

## OpenAI and Foxconn collaborate to strengthen U.S. manufacturing across the AI supply chain

DevFeed: [OpenAI and Foxconn collaborate to strengthen U.S. manufacturing across the AI supply chain](<https://devfeed.tech/articles/openai-and-foxconn-collaborate-to-strengthen-u-s-manufacturing-across-the-ai-supply-chain-6566.md>)

Original publisher: [Read original article](<https://openai.com/index/openai-and-foxconn-collaborate>)

Published: 2025-11-20T14:50:00Z

Content type: news

Language: en

Sources: [OpenAI News](<https://devfeed.tech/sources/openai-news.md>)

Topics: [AI Infrastructure](<https://devfeed.tech/topics/ai-infrastructure.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [datacenter](<https://devfeed.tech/topics/datacenter.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [data centers](<https://devfeed.tech/topics/data-centers.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-infrastructure](<https://devfeed.tech/tags/ai-infrastructure.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [build](<https://devfeed.tech/tags/build.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [company](<https://devfeed.tech/tags/company.md>), [components](<https://devfeed.tech/tags/components.md>), [compute](<https://devfeed.tech/tags/compute.md>), [data-center](<https://devfeed.tech/tags/data-center.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [manufacturing](<https://devfeed.tech/tags/manufacturing.md>), [networking](<https://devfeed.tech/tags/networking.md>), [openai](<https://devfeed.tech/tags/openai.md>), [partnership](<https://devfeed.tech/tags/partnership.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>)

### AI overview

OpenAI and Foxconn are collaborating on the design and U.S. manufacturing readiness of next-generation AI infrastructure hardware. The initiative covers multiple generations of AI data center racks, domestic supply-chain development, and U.S. production of components such as cabling, networking, cooling, and power systems.

### Source excerpt

OpenAI and Foxconn are collaborating to design and manufacture next-generation AI infrastructure hardware in the U.S. The partnership will develop multiple generations of data-center systems, strengthen U.S. supply chains, and build key components domestically to accelerate advanced AI infrastructure.

## \[RevEng\] Toy decompiler

DevFeed: [\[RevEng\] Toy decompiler](<https://devfeed.tech/articles/reveng-toy-decompiler-20582.md>)

Original publisher: [Read original article](<https://yurichev.com/blog/toy_decompiler/>)

Published: 2025-11-16T23:00:00Z

Content type: article

Language: en

Sources: [Dennis Yurichev](<https://devfeed.tech/sources/dennis-yurichev.md>)

Topics: [Assembly](<https://devfeed.tech/topics/assembly.md>), [Code](<https://devfeed.tech/topics/code.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Python](<https://devfeed.tech/topics/python.md>), [C](<https://devfeed.tech/topics/c.md>), [gcc](<https://devfeed.tech/topics/gcc.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [python](<https://devfeed.tech/tags/python.md>), [rewrite](<https://devfeed.tech/tags/rewrite.md>)

### AI overview

This article describes a toy decompiler for Xilinx MicroBlaze assembly. It manually and programmatically rewrites chains of addk and rsubk instructions into multiplication expressions, using Python regular expressions and tests, then discusses limitations including GCC optimization and the experimental nature of the implementation.

### Source excerpt

[RevEng] Toy decompiler

## Custom Assembly Updates: Create Multiple, Customized Variants of a Chainguard Container

DevFeed: [Custom Assembly Updates: Create Multiple, Customized Variants of a Chainguard Container](<https://devfeed.tech/articles/custom-assembly-updates-create-multiple-customized-variants-of-a-chainguard-container-13015.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/custom-assembly-updates-create-multiple-customized-variants-of-a-chainguard-container>)

Published: 2025-10-29T00:00:00Z

Content type: release

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard custom assembly](<https://devfeed.tech/topics/chainguard-custom-assembly.md>), [chainguard containers](<https://devfeed.tech/topics/chainguard-containers.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [cve remediation](<https://devfeed.tech/topics/cve-remediation.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [chainguard-containers](<https://devfeed.tech/tags/chainguard-containers.md>), [chainguard-custom-assembly](<https://devfeed.tech/tags/chainguard-custom-assembly.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [custom-assembly](<https://devfeed.tech/tags/custom-assembly.md>), [custom-chainguard-containers](<https://devfeed.tech/tags/custom-chainguard-containers.md>), [custom-chainguard-images](<https://devfeed.tech/tags/custom-chainguard-images.md>), [customers](<https://devfeed.tech/tags/customers.md>), [cve-remediation](<https://devfeed.tech/tags/cve-remediation.md>), [new-feature](<https://devfeed.tech/tags/new-feature.md>)

### AI overview

Chainguard announces enhancements to Custom Assembly that let customers create, add, delete, rename, edit, preview, and manage multiple customized variants of Chainguard container images directly in the console. The update supports self-serve provisioning and includes build history, logs, and build status.

### Source excerpt

Customize Chainguard Containers with the latest Custom Assembly update. You can create, edit, and manage secure, zero-CVE image variants directly in the console.

## Working for a Vendor with David Gee

DevFeed: [Working for a Vendor with David Gee](<https://devfeed.tech/articles/working-for-a-vendor-with-david-gee-11272.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2025/10/working-for-vendor-david-gee/>)

Published: 2025-10-07T06:23:00Z

Content type: article

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [networking](<https://devfeed.tech/topics/networking.md>), [Development](<https://devfeed.tech/topics/development.md>), [C](<https://devfeed.tech/topics/c.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [development](<https://devfeed.tech/tags/development.md>), [networking](<https://devfeed.tech/tags/networking.md>), [podcast](<https://devfeed.tech/tags/podcast.md>), [software-gone-wild](<https://devfeed.tech/tags/software-gone-wild.md>)

### AI overview

An interview with David Gee examines his career across system integrators, networking vendors, software vendors, and his own systems integration business. The article also includes his reflections on creating software, learning from flawed code, and an early control-system project written in C and assembly.

### Source excerpt

When I first met David Gee, he worked for a large system integrator. A few years later, he moved to a networking vendor, worked for a few of them, then for a software vendor, and finally decided to start his own system integration business. Obviously, I wanted to know what drove him to make those changes, what lessons he learned working in various parts of the networking industry, and what (looking back with perfect hindsight) he would have changed. Read more ...

## Inside Go -- Part 1: The Compilation Pipeline

DevFeed: [Inside Go -- Part 1: The Compilation Pipeline](<https://devfeed.tech/articles/inside-go-part-1-the-compilation-pipeline-39763.md>)

Original publisher: [Read original article](<https://furkankolcu.com/post/inside-go-part-1-the-compilation-pipeline>)

Author: Furkan Kolcu

Published: 2025-09-11T10:34:38Z

Content type: tutorial

Language: en

Sources: [Furkan Kolcu - Software Engineer Blog](<https://devfeed.tech/sources/furkan-kolcu-software-engineer-blog.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [ast](<https://devfeed.tech/tags/ast.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [go](<https://devfeed.tech/tags/go.md>), [go-ast](<https://devfeed.tech/tags/go-ast.md>), [go-compilation](<https://devfeed.tech/tags/go-compilation.md>), [go-compiler](<https://devfeed.tech/tags/go-compiler.md>), [go-internals](<https://devfeed.tech/tags/go-internals.md>), [go-lexer](<https://devfeed.tech/tags/go-lexer.md>), [go-parser](<https://devfeed.tech/tags/go-parser.md>), [go-ssa](<https://devfeed.tech/tags/go-ssa.md>), [golang](<https://devfeed.tech/tags/golang.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [ssa](<https://devfeed.tech/tags/ssa.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

This tutorial explains how Go source code is transformed into a native executable. It covers lexing and parsing, abstract syntax trees, type checking, SSA, optimization, code generation, and linking, with simple examples and analogies.

### Source excerpt

In this first part of the "Inside Go" series, I'll walk through how Go source code transforms into a binary. From lexing and parsing to ASTs, SSA, and optimizations, we'll explore the steps of the Go compilation pipeline with simple code examples and analogies to make sense of it all.

## Coding with LLMs in the summer of 2025 (an update)

DevFeed: [Coding with LLMs in the summer of 2025 (an update)](<https://devfeed.tech/articles/coding-with-llms-in-the-summer-of-2025-an-update-20645.md>)

Original publisher: [Read original article](<http://antirez.com/news/154>)

Published: 2025-07-20T10:58:54Z

Content type: article

Language: en

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

Topics: [Large Language Model](<https://devfeed.tech/topics/llm.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [claude](<https://devfeed.tech/tags/claude.md>), [code](<https://devfeed.tech/tags/code.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [coding](<https://devfeed.tech/tags/coding.md>), [llms](<https://devfeed.tech/tags/llms.md>), [programming](<https://devfeed.tech/tags/programming.md>), [redis](<https://devfeed.tech/tags/redis.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

The article reflects on how frontier LLMs such as Gemini 2.5 PRO and Claude can support programming through code reviews, rapid prototyping, pair design, specification-driven coding, and work with unfamiliar technologies. It argues that effective use depends on clear problem descriptions, iterative collaboration, and human judgment.

### Source excerpt

Frontier LLMs such as Gemini 2.5 PRO, with their vast understanding of many topics and their ability to grasp thousands of lines of code in a few seconds, are able to extend and amplify the programmer capabilities. If you are able to describe problems in a clear way and, if you are able to accept the back and forth needed in order to work with LLMs, you can reach incredible results such as: 1. Eliminating bugs you introduced in your code before it ever hits any user: I experienced this with Vector Sets implementation of Redis. I would end eliminating all the bugs eventually, but many were just removed immediately by Gemini / Claude code reviews. 2. Explore faster how a given idea could work, by letting the LLM write the throw away code to test ASAP in order to see if a given solution is actually more performant, if it is good enough, and so forth. 3. Engage in pair-design activities where your instinct, experience, design taste can be mixed with the PhD-level knowledge encoded inside the LLM. In this activity, the LLM will sometimes propose stupid paths, other times incredibly bright ideas: you, the human, are there in order to escape local minimal and mistakes, and exploit the fact your digital friend knows of certain and various things more than any human can. 4. Accelerate your work by writing part of the code under your clear specifications. 5. Work with technologies far from your expertise but contiguous with what you can do (for instance: coding in 68000 assembly for an Amiga demo?) using LLMs as an extension of specific parts of your mind, for the knowledge you don't have. One and half years ago I wrote a blog post called "LLMs and programming in the first days of 2024". There, I found LLMs to be already useful, but during these 1.5 years, the progresses they made completely changed the game. However, in order to leverage their capabilities, humans interacting with LLMs must have certain qualities and follow certain practices. Let's explore them. ## Refuse vi

## Eliminating Array Bounds Checks

DevFeed: [Eliminating Array Bounds Checks](<https://devfeed.tech/articles/eliminating-array-bounds-checks-25610.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2025/eliminating-array-bounds-checks/>)

Author: Romain Guy

Published: 2025-05-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Memory Safety](<https://devfeed.tech/topics/memory-safety.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [inlining](<https://devfeed.tech/topics/inlining.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [developer](<https://devfeed.tech/tags/developer.md>), [exception](<https://devfeed.tech/tags/exception.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [inlining](<https://devfeed.tech/tags/inlining.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [performance](<https://devfeed.tech/tags/performance.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>)

### AI overview

This tutorial explains how Android Runtime array bounds checks protect memory safety but can add unnecessary instructions. It shows how a simple explicit check can help the compiler eliminate those checks in a fixed-size array, reducing the example from 136 to 60 arm64 instructions.

### Source excerpt

The Android Runtime (ART) offers a nice memory safety feature when accessing the content of an array. The indices you use are automatically checked against the bounds of the array to prevent unsafe memory accesses. To achieve this, ART generates extra machine instructions to throw an ArrayIndexOutOfBoundsException when the index is invalid. Here is a simple Kotlin example: 1fun scaleZ(values: FloatArray, scale: Float) = values[2] * scale After translation to arm64 assembly, we obtain the following result:

## Underrust: What is the cost of Mutex, RwLock and AtomicPtr?

DevFeed: [Underrust: What is the cost of Mutex, RwLock and AtomicPtr?](<https://devfeed.tech/articles/underrust-what-is-the-cost-of-mutex-rwlock-and-atomicptr-35479.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/underrust-mutual-exclusion/>)

Author: Graham King

Published: 2025-05-05T20:05:00Z

Content type: tutorial

Language: en

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

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [x86](<https://devfeed.tech/topics/x86.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [concurrent](<https://devfeed.tech/tags/concurrent.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [cycles](<https://devfeed.tech/tags/cycles.md>), [locking](<https://devfeed.tech/tags/locking.md>), [performance](<https://devfeed.tech/tags/performance.md>), [rust](<https://devfeed.tech/tags/rust.md>), [software](<https://devfeed.tech/tags/software.md>), [synchronization](<https://devfeed.tech/tags/synchronization.md>), [underrust](<https://devfeed.tech/tags/underrust.md>)

### AI overview

A Rust-focused analysis uses assembly output to examine the cost of Mutex, RwLock, and atomic operations for many concurrent readers and an occasional writer. It scopes the discussion to Linux and x86, noting that the fast-path operations discussed are roughly in the range of 20 to 30 CPU cycles.

### Source excerpt

With many concurrent readers and a single occasional writer, which mutual exclusion primitive should you use? Let's look at the assembly to find out.

## Underrust: How does u128 work on a 64-bit processor?

DevFeed: [Underrust: How does u128 work on a 64-bit processor?](<https://devfeed.tech/articles/underrust-how-does-u128-work-on-a-64-bit-processor-35481.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/underrust-u128/>)

Author: Graham King

Published: 2025-04-05T20:45:00Z

Content type: tutorial

Language: en

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

Topics: [cpu](<https://devfeed.tech/topics/cpu.md>), [x86](<https://devfeed.tech/topics/x86.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [processors](<https://devfeed.tech/tags/processors.md>), [rust](<https://devfeed.tech/tags/rust.md>), [simd](<https://devfeed.tech/tags/simd.md>), [software](<https://devfeed.tech/tags/software.md>), [sse](<https://devfeed.tech/tags/sse.md>), [underrust](<https://devfeed.tech/tags/underrust.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

The article explains how Rust u128 values work on x86-64 processors whose general-purpose registers are limited to 64 bits. It describes splitting values across two registers and distinguishes this from the use of 128-bit SSE registers for SIMD operations.

### Source excerpt

Wherein our hero learns the arcane secrets of the u128 sword in the depths of the Underrust.

## Avoiding Compiler Elimination in Code Microbenchmarks

DevFeed: [Avoiding Compiler Elimination in Code Microbenchmarks](<https://devfeed.tech/articles/you-are-going-to-need-it-25608.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2024/you-are-going-to-need-it/>)

Author: Romain Guy

Published: 2024-12-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [Code](<https://devfeed.tech/topics/code.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [benchmarking](<https://devfeed.tech/tags/benchmarking.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [code](<https://devfeed.tech/tags/code.md>), [compare](<https://devfeed.tech/tags/compare.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [developer](<https://devfeed.tech/tags/developer.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [measurement](<https://devfeed.tech/tags/measurement.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article explains how compiler and runtime optimizations can eliminate the computation being measured in a microbenchmark. Using a comparison between value.pow(2f) and value * value, it shows why inspecting generated code and introducing a carefully placed side effect are necessary for a valid measurement.

### Source excerpt

Optimizing code can be a difficult task because there are so many traps you need to avoid at every step of the way. Today I want to focus on one of the (numerous) benchmarking traps, which you may have run into, and that I myself encounter regularly. Let's imagine you are trying to optimize code, and you notice the use of a value.pow(2f). One obvious way to optimize this is to replace the function call with a multiplication (value * value), but is it worth it? Since you are a diligent engineer, you decide to write a microbenchmark to compare before and after:

## PIE Instruction Extensions on ESP32-P4 and ESP32-S3

DevFeed: [PIE Instruction Extensions on ESP32-P4 and ESP32-S3](<https://devfeed.tech/articles/explore-the-pie-capabilities-on-the-esp32-p4-13674.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2024/12/pie-introduction/>)

Author: John Lee

Published: 2024-12-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP32-P4](<https://devfeed.tech/topics/esp32-p4.md>), [ESP32-S3](<https://devfeed.tech/topics/esp32-s3.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [Inference](<https://devfeed.tech/topics/inference.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [real-time](<https://devfeed.tech/topics/real-time.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [blog](<https://devfeed.tech/tags/blog.md>), [dsp](<https://devfeed.tech/tags/dsp.md>), [esp32-p4](<https://devfeed.tech/tags/esp32-p4.md>), [esp32-s3](<https://devfeed.tech/tags/esp32-s3.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [inference](<https://devfeed.tech/tags/inference.md>), [pie](<https://devfeed.tech/tags/pie.md>), [real-time](<https://devfeed.tech/tags/real-time.md>)

### AI overview

This tutorial examines PIE processor instruction extensions on ESP32-S3 and ESP32-P4. It covers their instruction architecture, formats, applications, and differences in hardware-loop support and accumulator size.

### Source excerpt

The recent breakthroughs in artificial intelligence technology in such fields as image recognition, speech recognition, and natural language processing have opened up more possibilities for embedded system applications. When attempting to deploy AI model inference on embedded devices such as the ESP32-P4, we always strive to minimize inference time as much as possible to meet real-time requirements.

## A Micro-optimization You Will Never Need

DevFeed: [A Micro-optimization You Will Never Need](<https://devfeed.tech/articles/a-micro-optimization-you-will-never-need-25595.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2024/a-micro-optimization-you-will-never-need/>)

Author: Romain Guy

Published: 2024-11-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [Optimization](<https://devfeed.tech/topics/optimization.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [code](<https://devfeed.tech/tags/code.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [developer](<https://devfeed.tech/tags/developer.md>), [devices](<https://devfeed.tech/tags/devices.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [low-power](<https://devfeed.tech/tags/low-power.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article presents a Kotlin micro-optimization that counts leading zeroes so comparisons can use smaller constants encoded directly in AArch64 instructions. The change reduces the compiled function from 21 to 18 instructions, with an estimated performance difference of about 0.5% on a Pixel 8 and around 11% on a Pixel 2.

### Source excerpt

Today I would like to show you a micro-optimization I recently used more for the fun of it than for its real impact. It's an interesting trick that you should never bother to use, nor worry about. It starts from a piece of Kotlin code that looked a bit like this (the original version used named constants, but I replaced them with their actual values for clarity in this context):

## Optimizing Digit Counting for Kotlin Long Values

DevFeed: [Optimizing Digit Counting for Kotlin Long Values](<https://devfeed.tech/articles/down-another-rabbit-hole-25597.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2024/down-another-rabbit-hole/>)

Author: Romain Guy

Published: 2024-05-27T00:00:00Z

Content type: article

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [code](<https://devfeed.tech/tags/code.md>), [developer](<https://devfeed.tech/tags/developer.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [numbers](<https://devfeed.tech/tags/numbers.md>), [operator](<https://devfeed.tech/tags/operator.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article explores ways to count the decimal digits in positive Kotlin Long values without relying on floating-point log10, which cannot represent every Long value exactly. It compares a straightforward branching approach with a binary-search solution and reports faster execution for the latter on a Pixel 6.

### Source excerpt

Jake Wharton recently caused me to go down yet another silly optimization rabbit hole when he nonchalantly linked to a piece of code used to count the number of digits in a Long during a Slack conversation about Kotlin's lack of ternary operator. This of course triggered folks like Madis Pink and me to want to optimize it... Counting digits Link to heading The simplest way to count the number of digits would be to compute log10(n).toInt() + 1, where n is our input number. Unfortunately logarithmic functions like Kotlin's log10 are only defined for floating point numbers. If our input is an Int or a Long, we could first convert to Double and then call log10, but not all Long values can be stored in a Double (any value above 2^53), and we would have to special case 0. We must therefore find a different solution1.

[Next page](<https://devfeed.tech/tags/assembly.md?cursor=WyIyMDI0LTA1LTI3VDAwOjAwOjAwKzAwOjAwIiwgImQ2MmRiMGNkLWM1OWMtNGVlNy1hMzUzLWQ5OWY4MWU0ZmRjYSJd>)