comparison lwasm/insn_indexed.c @ 138:57c0210d578c

Fix error with postbyte for constant offset from W modes
author lost@l-w.ca
date Fri, 19 Aug 2011 17:46:19 -0600
parents f2f3a4b0a25e
children da891a357d97
comparison
equal deleted inserted replaced
137:b62f5389b859 138:57c0210d578c
254 return; 254 return;
255 } 255 }
256 256
257 if (l -> lint == 2) 257 if (l -> lint == 2)
258 { 258 {
259 l -> pb = indir ? 0xb0 : 0xcf; 259 l -> pb = indir ? 0xb0 : 0xaf;
260 l -> lint = 2; 260 l -> lint = 2;
261 return; 261 return;
262 } 262 }
263 263
264 l -> pb = (0x80 * indir) | rn; 264 l -> pb = (0x80 * indir) | rn;
384 case 3: 384 case 3:
385 pb = 0x89 | ((l -> pb & 0x03) << 5) | ((l -> pb & 0x80) ? 0x10 : 0); 385 pb = 0x89 | ((l -> pb & 0x03) << 5) | ((l -> pb & 0x80) ? 0x10 : 0);
386 break; 386 break;
387 387
388 case 4: // W 388 case 4: // W
389 pb = (l -> pb & 0x80) ? 0xD0 : 0xCF; 389 pb = (l -> pb & 0x80) ? 0xB0 : 0xAF;
390 break; 390 break;
391 391
392 case 5: // PCR 392 case 5: // PCR
393 case 6: // PC 393 case 6: // PC
394 pb = (l -> pb & 0x80) ? 0x9D : 0x8D; 394 pb = (l -> pb & 0x80) ? 0x9D : 0x8D;
420 pb = (l -> pb & 0x80) ? 0x90 : 0x8F; 420 pb = (l -> pb & 0x80) ? 0x90 : 0x8F;
421 l -> lint = 0; 421 l -> lint = 0;
422 } 422 }
423 else 423 else
424 { 424 {
425 pb = (l -> pb & 0x80) ? 0xD0 : 0xCF; 425 pb = (l -> pb & 0x80) ? 0xB0 : 0xAF;
426 l -> lint = 2; 426 l -> lint = 2;
427 } 427 }
428 break; 428 break;
429 429
430 case 5: // PCR 430 case 5: // PCR
488 case 3: 488 case 3:
489 pb = 0x89 | (l -> pb & 0x03) << 5 | ((l -> pb & 0x80) ? 0x10 : 0); 489 pb = 0x89 | (l -> pb & 0x03) << 5 | ((l -> pb & 0x80) ? 0x10 : 0);
490 break; 490 break;
491 491
492 case 4: // W 492 case 4: // W
493 pb = (l -> pb & 0x80) ? 0xD0 : 0xCF; 493 pb = (l -> pb & 0x80) ? 0xB0 : 0xAF;
494 break; 494 break;
495 495
496 case 5: // PCR 496 case 5: // PCR
497 case 6: // PC 497 case 6: // PC
498 pb = (l -> pb & 0x80) ? 0x9D : 0x8D; 498 pb = (l -> pb & 0x80) ? 0x9D : 0x8D;
522 pb = (l -> pb & 0x80) ? 0x90 : 0x8F; 522 pb = (l -> pb & 0x80) ? 0x90 : 0x8F;
523 l -> lint = 0; 523 l -> lint = 0;
524 } 524 }
525 else 525 else
526 { 526 {
527 pb = (l -> pb & 0x80) ? 0xD0 : 0xCF; 527 pb = (l -> pb & 0x80) ? 0xB0 : 0xAF;
528 l -> lint = 2; 528 l -> lint = 2;
529 } 529 }
530 break; 530 break;
531 531
532 case 5: // PCR 532 case 5: // PCR