tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: [TEST CASE] String offset errors on evbarm 8.99 [PR 54159]



Joerg Sonnenberger writes:
> On Wed, Aug 07, 2019 at 08:35:09PM +0200, tlaronde%polynum.com@localhost wrote:
> > At the very least, I would like to be pointed to some
> > documentation, particularily about what are these special symbols '$a'
> > '$d' (and '$t' and what else?) and what is special about the earmv7
> > case.
> 
> Short background: ARM CPUs can generally operate in one of two modes:
> ARM mode or Thumb mode. The former is more expressive by using 32bit
> instructions, the latter is more compact due to using 16bit
> instructions. In both modes, constants longer than 16bit are often
> placed into so-called constant pools before or after a function.

it's even worse. :)

larger functions may have multiple constant pools in the code
that are inserted immediately after unconditional branches if
possible, or a branch placed before it no suitable location
can be found in the attempted output.


.mrg.

ps: xscale CPUs run slightly faster if constant pools are
cache-line aligned (including the next constant -> text
in the output) as well.  not sure that ever got implemented
in GCC proper..


Home | Main Index | Thread Index | Old Index