5 ms·
I will shed a small tear for the passing of AArch32 as it was the first processor architecture I really enjoyed programming. I wrote hundreds of thousands of l
by nickcw 5y ago
I will shed a small tear for the passing of AArch32 as it was the first processor architecture I really enjoyed programming.
I wrote hundreds of thousands of lines of assembler for it and what a fun architecture it was to program for. Enough registers to mean you rarely needed extra storage in a function and conditional instructions to lose those branches and combine that with 3 register arguments to each instruction meant that there was lots of opportunity for optimisation. Plus the (not very RISC but extremely useful) load and store multiple instructions and that made it a joy to work with.
AArch64 is quite nice too but they took a some of the fun out of the instruction set - conditional execution and load and store multiple. They did that for good reason though in order to make faster superscalar processors so I don't blame them!
- ant6n 5y agoAlso fun bits for optimization: the barrel shifter that can be used on the second argument in any instruction, and the possibility to make any instruction conditional on the flags. ...At some point I started an x86 on Arm emulator, and managed to run x86 instructions in like 5-7 Arm instructions, without JIT, including reading next instruction and jumping to it - all thanks to the powerful Arm instruction set.
- nickcw 5y agoAh yes, I forgot the barrel shifter. Shift anything in no extra cycles :-)
- josteink 5y ago> I will shed a small tear for the passing of AArch32 as it was the first processor architecture I really enjoyed programming. I’ll say the same for the Motorola 68k series CPUs for the exact same reason. With Intel’s era of total domination nearing an end, I guess we’re seeing some things go full circle.
- kevin_thibedeau 5y agoCortex M isn't going anywhere. I can't imagine 32-bit ARM will ever die.
- gsnedders 5y agoGenuine question: what stops most Cortex M users from adopting A64 with ILP32? Anything except existing codebases?
- ChuckNorris89 5y agoMany reasons. Cost being the biggest (64bit dies would cost way more than the 32bit ones) and power consumption (having a complex pipeline with 64bit registers isn't great when you have to run on a coin cell for a year). Similar reasons to why 8 and 16 bit micros stuck around for so long in low cost and low power devices before Cortex M0+ became cheap and frugal enough.
- monocasa 5y agoAt least in the M0 range, A64 won't be competitive on a gate count basis. M0s can be ridiculously tiny, down to ~12k gates, which is how they were able to take a huge chunk out of the market that had previously been 8/16 bit processors like 8051s and the like. M33s and up might make sense as A64 cores though.
- lttlrck 5y agoJust 12K? That's amazing. I had to look up how many the ARM1 had in 1985: 25K! 3000nm process.
- pjmlp 5y agoAnd it is powerfull enough to run managed environments, depending on the available storage, https://www.astrobe.com/Oberon.htm https://www.astrobe.com/Oberon.htm https://docs.microej.com/en/latest/PlatformDeveloperGuide/platformOverview.html# https://docs.microej.com/en/latest/PlatformDeveloperGuide/pl... https://tinygo.org/docs/reference/microcontrollers/trinket-m0/ https://tinygo.org/docs/reference/microcontrollers/trinket-m...
- topspin 5y agoGenuine answer: power. Power consumption is a hard constraint. The benefits of A64 have to outweigh the cost in power consumption, and the benefits just aren't there. Coin cells, small solar collectors and supercaps are among the extremely limited power sources for many Cortex M applications.
- txdv 5y agoany recommendations on learning assembly?
- cromka 5y agoYes.
- O_H_E 5y agoI am pretty sure txdv actually wanted a recommendation
- CalChris 5y agoHennessy + Patterson, Computer Organization and Design, ARM edition https://www.elsevier.com/books/computer-organization-and-design-arm-edition/patterson/978-0-12-801733-3 https://www.elsevier.com/books/computer-organization-and-des...
- catblast01 5y ago> not very RISC but extremely useful.. load and store multiple Who was it that said that R and RISC as a nomenclature was always hogwash. A more apt name would be “load-store architecture” Onne random thing I remember about LDM/STM was the earliest rev silicon of the Motorola (now Freescale) ARM based DragonBall (then better named the MX line) was the ARM9 core had a bug where LDM/STM would not work with the cache enabled - which of course was horrible, so we hacked gcc to not emit these instructions as a temporary workaround.
- Iwan-Zotow 5y ago> hundreds of thousands of lines of assembler hundreds of thousands of lines of assembler ?!? man...