Article: AMD's Mobile Strategy
By: Exophase (exophase.delete@this.gmail.com), December 21, 2011 9:42 am
Room: Moderated Discussions
gallier2 (gallier2@gmx.de) on 12/21/11 wrote:
---------------------------
>You should, it has nothing to do with hand generated assembler. Every string litteral
>in a C program is a global variable and normal C programs are littered with strings.
>That was for instance what killed me on SPARC when going from 32 to 64 bits binaries.
>Every address load went from 2 to 5 instructions and it used 3 instead of 2 registers
>which had downwind pessimization effects on register allocation.
But with archs with PC-relative addressing like ARM strings are just kept near the functions where they're used and pointers to them are usually generated in one instruction.
Taking five instructions to generate them is weird, did they really have to be stored in a section so far from 0? But I guess SPARC should have added PC-relative addressing.
---------------------------
>You should, it has nothing to do with hand generated assembler. Every string litteral
>in a C program is a global variable and normal C programs are littered with strings.
>That was for instance what killed me on SPARC when going from 32 to 64 bits binaries.
>Every address load went from 2 to 5 instructions and it used 3 instead of 2 registers
>which had downwind pessimization effects on register allocation.
But with archs with PC-relative addressing like ARM strings are just kept near the functions where they're used and pointers to them are usually generated in one instruction.
Taking five instructions to generate them is weird, did they really have to be stored in a section so far from 0? But I guess SPARC should have added PC-relative addressing.