Port-sparc64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Code models on sparc v9
On Sat, Aug 15, 2009 at 12:29:03PM +0100, raymond.meyer%rambler.ru@localhost
wrote:
>
> So a few questions,
>
> Why implement different code models, is it mainly to reduce the number
> of instructions when loading address constants into a register? Is that
> the only difference between them?
It is all about avoiding expensive code sequences for 64 bit constants.
32 bit immediates are 2 instructions (as on sparc32), 44 bit are
probably 3 (pc relative loads might be used - but they are cache-inefficient).
> Why is that in all code models, code size must be less than 2
> gigabytes?
Because the call and unconditional branch instructions have 32bit offset
(after allowing for code alignment).
> Are there any large applications that might need more than 2 gigabytes?
Possibly, but since the additional code can be in a separate shared
library it isn't a problem.
> When would you use abs64 code model, as opposed to abs44 or abs32?
If your OS might map code above 2^44.
(FYI: The kernel has all the -ve addresses)
David
--
David Laight: david%l8s.co.uk@localhost
Home |
Main Index |
Thread Index |
Old Index