> Uh, so sizetype is 32bit but pointer displacements are 24bit? :( Worse. sizetype is 16bit but pointer displacements are 24bit. There are no 24bit address registers, nor are there enough 24bit math opcodes to satisfy gcc (without switching to 32bit emulated math, which is REALLY slow).
It's kinda like a -65536..+65535 displacement range. > So negative displacements will be 24bit displacements (expensive) > and small positive displacements will fit in 16bit (or even 8bit) > displacements? Yup. 0, 8, 16, and 24 bit displacements - all unsigned.