| 3452 | } |
| 3453 | |
| 3454 | void Sib1(DecodeData* data, DecodedOp* op) { |
| 3455 | U8 sib=data->fetch8(); |
| 3456 | |
| 3457 | switch (sib&7) { |
| 3458 | case 0: |
| 3459 | op->base=data->ds; op->rm=regAX;break; |
| 3460 | case 1: |
| 3461 | op->base=data->ds; op->rm=regCX;break; |
| 3462 | case 2: |
| 3463 | op->base=data->ds; op->rm=regDX;break; |
| 3464 | case 3: |
| 3465 | op->base=data->ds; op->rm=regBX;break; |
| 3466 | case 4: |
| 3467 | op->base=data->ss; op->rm=regSP;break; |
| 3468 | case 5: |
| 3469 | op->base=data->ss; op->rm=regBP;break; |
| 3470 | case 6: |
| 3471 | op->base=data->ds; op->rm=regSI;break; |
| 3472 | case 7: |
| 3473 | op->base=data->ds; op->rm=regDI;break; |
| 3474 | } |
| 3475 | op->sibIndex = SibE2Reg[(sib >> 3) & 7]; |
| 3476 | op->sibScale = sib >> 6; |
| 3477 | } |
| 3478 | |
| 3479 | void decodeEa32(DecodeData* data, DecodedOp* op, U8 rm) { |
| 3480 | op->rm=regZero; |