On Saturday, 6 February 2016 at 21:58:17 UTC, Dan Olson wrote:
Hi Iain, Johannes. I'm asking here because I don't expect
anybody else is playing with thumb instructions.
Both GDC and LDC have version ARM_Thumb defined for original
thumb (call it thumb-1) and thumb-2. But there is no way to
tell in D code which set is supported.
GCC and clang define these:
__arm__
Always defined when building for the ARM architecture
(regardless of
target instruction set)
__thumb__
Defined only when targeting any Thumb instruction set variant
(Thumb-1
or Thumb-2)
__thumb2__
Defined only when targeting Thumb-2
We could mimic this by adding ARM_Thumb2.
But in my experience it is usually thumb-1 that needs special
handling because it is very limited, and thumb-2 uses unified
assembler so often same code works for either thumb-2 or arm
modes.
So I am thinking that ARM_Thumb1 would be more practical. What
do you think?
I think to do this properly with ARM you need to consider the ARM
architecture (ARMv6, ARMv7, ARMv7-A, ARMv7-M, etc..) AND the
instruction set (ARM or ARM_Thumb). I read it somewhere, but I'm
having trouble finding it again.
Anyway, used in conjunction with the architecture, I believe only
one ARM_Thumb identifier is needed.
It also appears that, with the introduction of AArch64, ARM is
trying to transition this nomenclature to A32 (ARM), T32 (Thumb),
A64 (64-bit ARM?). See
http://www.arm.com/products/processors/instruction-set-architectures/
Mike
Mike