I believe that AArch64 still uses 4-byte encodings for many instructions too, with a few that need 8 bytes.
I believe that AArch64 still uses 4-byte encodings for many instructions too, with a few that need 8 bytes.
busybox (i686) 2022-01-17 17:40 1.0M
busybox (x86_64) 2022-01-17 18:53 1.1M
However, the savings on ARM Thumb appears to be larger, even for the various 32-bit binaries (v7m is Thumb, as I understand it): busybox-armv7m 2019-06-10 14:02 867K
busybox-armv5l 2019-06-10 14:02 1.1M
busybox-armv7l 2019-06-10 14:02 1.1M
busybox-armv7r 2019-06-10 14:02 1.1M
busybox-armv8l 2019-06-10 14:02 1.1M
Strange that Super-H is this large, as it inspired Thumb: busybox-sh4 2019-06-10 14:02 1.0M
https://busybox.net/downloads/binaries/x86 has the huge disadvantage that it can't use 2-byte encodings for common instructions, since a lot of those are used by 16-bit and 8-bit instructions (which are almost completely unused today).
Does the footprint of Thumb (including total bytes, count of opcodes, speed, likely other things that I have not thought of) impact the conclusions in the paper?
Interesting that Thumb has been removed from AArch64, and that Intel never added anything like it.
Thumb was a thing for embedded systems with very limited RAM etc. It was not designed for optimal speed.
My guess is that ARM64 targeted higher end, and that severe memory constraints were no longer considered a big issue. ARM has its Cortex M4 (Thumb only microcontrollers) and the likes for those markets.