How I think maybe I fucked up and took the purple pill
About me, the very young me
This blog has a new format and setup from the old WordPress days
Encoding 12 bit immediate values for 32 bit ARM instructions can get somewhat complicated when the numbers get large enough, click this article for more details.
Invoke is a common calling convention for assembly source, especially as found as examples on the internet. But 'invoke' isn't assembly, it's abstracted, and it makes disassembly harder to follow. This post is a discussion of this issue and how I came to using the standard assembly 'call' convention.
RRX is encoded as ROR with the imm5 field hardcoded as 0's.
The MOV and shift instructions (like LSL) are encoded the same. You could use the LSL instruction with the imm5 field hardcoded to 0's and it will encode exactly the same as MOV.
Building a BrainFuck compiler with the main component being the sed tool.
The order of adding two registers in a pointer shouldn't matter logically, but it does when it comes to encoding. This is because the 2nd register is a multiplier even if only be 1. Read more for the interesting details.
An exploration of some ambiguities that signed numbers can introduce to your assembler, what your assembler will choose, and how you can choose anything you want.