339 |
|
case 'A': |
340 |
|
srcmode = Areg; |
341 |
|
switch (opcstr[pos++]) { |
342 |
– |
case 'l': srcmode = absl; break; |
342 |
|
case 'r': srcreg = bitval[bitr]; srcgather = 1; srcpos = bitpos[bitr]; break; |
343 |
|
case 'R': srcreg = bitval[bitR]; srcgather = 1; srcpos = bitpos[bitR]; break; |
344 |
|
default: abort(); |
348 |
|
case 'P': srcmode = Aipi; pos++; break; |
349 |
|
} |
350 |
|
break; |
351 |
+ |
case 'L': |
352 |
+ |
srcmode = absl; |
353 |
+ |
break; |
354 |
|
case '#': |
355 |
|
switch (opcstr[pos++]) { |
356 |
|
case 'z': srcmode = imm; break; |
397 |
|
} |
398 |
|
break; |
399 |
|
case 'p': srcmode = immi; srcreg = bitval[bitp]; |
400 |
< |
if (CPU_EMU_SIZE < 5) { // gb-- what is CPU_EMU_SIZE used for ?? |
400 |
> |
if (CPU_EMU_SIZE < 5) { |
401 |
|
/* 0..3 */ |
402 |
|
srcgather = 1; |
403 |
|
srctype = 7; |
528 |
|
case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break; |
529 |
|
default: abort(); |
530 |
|
} |
531 |
+ |
if (dstpos < 0 || dstpos >= 32) |
532 |
+ |
abort(); |
533 |
|
break; |
534 |
|
case 'A': |
535 |
|
destmode = Areg; |
536 |
|
switch (opcstr[pos++]) { |
533 |
– |
case 'l': destmode = absl; break; |
537 |
|
case 'r': destreg = bitval[bitr]; dstgather = 1; dstpos = bitpos[bitr]; break; |
538 |
|
case 'R': destreg = bitval[bitR]; dstgather = 1; dstpos = bitpos[bitR]; break; |
539 |
+ |
case 'x': destreg = 0; dstgather = 0; dstpos = 0; break; |
540 |
|
default: abort(); |
541 |
|
} |
542 |
+ |
if (dstpos < 0 || dstpos >= 32) |
543 |
+ |
abort(); |
544 |
|
switch (opcstr[pos]) { |
545 |
|
case 'p': destmode = Apdi; pos++; break; |
546 |
|
case 'P': destmode = Aipi; pos++; break; |
547 |
|
} |
548 |
|
break; |
549 |
+ |
case 'L': |
550 |
+ |
destmode = absl; |
551 |
+ |
break; |
552 |
|
case '#': |
553 |
|
switch (opcstr[pos++]) { |
554 |
|
case 'z': destmode = imm; break; |