LLE JIT: Added the loop instructions to the JIT. Added ASM version of HandleLoop. Both x86 and x64 versions have been added.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6659 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
skidau
2010-12-26 12:34:38 +00:00
parent 7c5b12c5bc
commit 963ca6f963
5 changed files with 230 additions and 12 deletions

View File

@ -142,7 +142,7 @@ void halt(const UDSPInstruction opc)
// instructions. Whenever there is value on stack $st2 and current PC is equal
// value at $st2, then value at stack $st3 is decremented. If value is not zero
// then PC is modified with value from call stack $st0. Otherwise values from
// call stack $st0 and both loop stacks $st2 and $st3 are poped and execution
// call stack $st0 and both loop stacks $st2 and $st3 are popped and execution
// continues at next opcode.
void HandleLoop()
{
@ -225,7 +225,7 @@ void loopi(const UDSPInstruction opc)
// specified address addrA inclusive, ie. opcode at addrA is the last opcode
// included in loop. Counter is pushed on loop stack $st3, end of block address
// is pushed on loop stack $st2 and repeat address is pushed on call stack $st0.
// Up to 4 nested loops is allowed.
// Up to 4 nested loops are allowed.
void bloop(const UDSPInstruction opc)
{
u16 reg = opc & 0x1f;
@ -253,7 +253,7 @@ void bloop(const UDSPInstruction opc)
// address addrA inclusive, ie. opcode at addrA is the last opcode included in
// loop. Counter is pushed on loop stack $st3, end of block address is pushed
// on loop stack $st2 and repeat address is pushed on call stack $st0. Up to 4
// nested loops is allowed.
// nested loops are allowed.
void bloopi(const UDSPInstruction opc)
{
u16 cnt = opc & 0xff;