At 18:22 08/11/2005, you wrote:
Any hints?

Use 2.1.1


Peter

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

P Davidson

Perhaps this code can do the trick, but don't know if is easily integrable in fpc ppc codegenerator, you can adapt it a bit if you want

** IN r3 Value to check r29 branch lookup table r5 top/end r6 low/begin r4 where to branch

SecuentialCase: lwz        r3,VALUE         // VALUE from TOC or BSS or other.
subi r29,r29,4 // Adjust value for access caseloop: lwzu r4,4(r29) // in address pointed by r29 begins the jump look-up table (L1051,L1052) mtctr r4 // Move address in r4 to CTR special register. CTR has now the destiny address
                         lwz        r5,TOP             // last value
                         lwz        r6,LOW            // low value
cmplwi cr2,r3,r6 // compare if value with r6 bcctr 12,10 // BO = 12 Branch if condition True. BI = 10 Condition flag Equal of cr2.
                         addi       r6,r6,1              // r6 := r6 +1
                         cmplwi   cr3,r5,r6           // is r6 > r5 ?
ble cr3,caseloop // Branch to caseloop if FALSE
                         otherwise statement or branch to it

** OUT r29, r6 originals values are destroyed.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to