>     2. Why do you use tables of small constants? There is 'mov #imm,Rn'
>     instruction, where #imm is 8-bit signed value. Works for all [Ss]igma
>     constants. As for mask_ff. There is extu.b that does &0xff...
> 
> This is very important for the sh4 serie 200 pipeline: there is only one
> ALU pipe, so you have to use load/store for optimization.

Is 'mov #imm,Rn' ALU instruction? Not according to "SH-4A Software
Manual", rev. 1.50, where it's marked MT, i.e. pairable with *anything*
and capable of executing on either pipe.

> I will take a deeper look on the extx ins usage.
> 
>     3. Position independence is still problem.
> 
>     > - In SH4 asm, the MOVA is hidden behind a normal mov.l without a base
>     > register, so in fact, it is used very often.
> 
>     Can't confirm this. Well, I can see now that it extensively uses 'mov.l
>     @(disp,PC),Rn' for loading constants, but no mova... I.e. following is
>     position-independent:
> 
>            mov.l   label,rx
> 
>     label:
>            .long   xxxx
> 
>     Only[!] as long as xxxx is *not* another label, in which case a
>     relocation record is generated voiding position independence.
> 
> 
> => I know, nevertheless, if you compile code on SH4 with gcc with -PIC,
> then the same apply, so currently, I don't see the point to make real
> PIC code on this CPU.

Are you afraid of doing better job than compiler? :-):-):-) I mean if
it's the case, obviously one can argue that lack of proper PIC support
in gcc is a bug. And if it's a bug, then chances are that it will be
fixed at some point. Why would we have to wait and struggle adapting
assembler later (when we've forgotten all about it), if we can do proper
job writing PIC code *now* and ensure it works for all eternity? As
mentioned in the beginning, assembler programming is exhausting
experience and there is no excuse for not doing absolute best from the
start. Because fixing it can be as exhausting, i.e. on the edge to
prohibitive. In other words, it's *not* an excuse for not doing it,
especially when we see that position independence doesn't cost much
extra (if anything at all).

> I will study some more anyway on that.
> Note: the mova ins is a ALU ins for this CPU.

Is this specific for 200 series? Got a reference? Thing is that above
mentioned manual lists 'mova' as LS instruction, i.e. non-ALU. But even
if it is, why is it a problem, when you have to use it only *once* per
subroutine invocation? A.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to