Paul Davidson wrote:


On Nov 8, 2005, at 12:11, Peter Vreman wrote:


# [735] case l3o3.FormType of
 // Select 3o3 processor
        lwz     r2,160(r1)
        cmplwi  cr0,r2,0
        beq     cr0,L1051
        cmplwi  cr0,r2,1
        beq     cr0,L1052
        cmplwi  cr0,r2,2
        beq     cr0,L1053
        cmplwi  cr0,r2,3
        beq     cr0,L1054

etc.

Any hints?


Use 2.1.1


Peter

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal



version 2.1.1 [2005/11/08] for powerpc
Same result, Peter :|

P Davidson
http://CoraxNetworks.com

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

You could use an array of procedures. It's members are initialized once,

var my_table: array [0 .. 146] of procedure;

my_table[0] := @my_proc_0;
my_tyble[1] := @my_proc_1;
...

and the 'case' statement is simply replaced with

begin
 ..
 my_table[x];
 ..
end;

which is fast, because it performs no compare, but loads the procedure address from the array, indexed with x.

Anton.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to