| 3427 | U32 SibE2Reg[8] = {regAX, regCX, regDX, regBX, regZero, regBP, regSI, regDI}; |
| 3428 | |
| 3429 | void Sib0(DecodeData* data, DecodedOp* op) { |
| 3430 | U8 sib=data->fetch8(); |
| 3431 | |
| 3432 | switch (sib&7) { |
| 3433 | case 0: |
| 3434 | op->base=data->ds; op->rm=regAX;break; |
| 3435 | case 1: |
| 3436 | op->base=data->ds; op->rm=regCX;break; |
| 3437 | case 2: |
| 3438 | op->base=data->ds; op->rm=regDX;break; |
| 3439 | case 3: |
| 3440 | op->base=data->ds; op->rm=regBX;break; |
| 3441 | case 4: |
| 3442 | op->base=data->ss; op->rm=regSP;break; |
| 3443 | case 5: |
| 3444 | op->base = data->ds; op->rm=regZero;op->data.disp = data->fetch32();break; |
| 3445 | case 6: |
| 3446 | op->base=data->ds; op->rm=regSI;break; |
| 3447 | case 7: |
| 3448 | op->base=data->ds; op->rm=regDI;break; |
| 3449 | } |
| 3450 | op->sibIndex = SibE2Reg[(sib >> 3) & 7]; |
| 3451 | op->sibScale = sib >> 6; |
| 3452 | } |
| 3453 | |
| 3454 | void Sib1(DecodeData* data, DecodedOp* op) { |
| 3455 | U8 sib=data->fetch8(); |
no test coverage detected