MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / decodeEa32

Function decodeEa32

source/emulation/cpu/decoder.cpp:3479–3511  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3477}
3478
3479void decodeEa32(DecodeData* data, DecodedOp* op, U8 rm) {
3480 op->rm=regZero;
3481 op->sibIndex=regZero;
3482 op->sibScale = 0;
3483 if (rm<0x40) {
3484 switch (rm & 7) {
3485 case 0x00: op->base=data->ds; op->rm = regAX; break;
3486 case 0x01: op->base=data->ds; op->rm = regCX; break;
3487 case 0x02: op->base=data->ds; op->rm = regDX; break;
3488 case 0x03: op->base=data->ds; op->rm = regBX; break;
3489 case 0x04: Sib0(data, op); break;
3490 case 0x05: op->base=data->ds; op->rm = regZero; op->data.disp = data->fetch32(); break;
3491 case 0x06: op->base=data->ds; op->rm = regSI; break;
3492 case 0x07: op->base=data->ds; op->rm = regDI; break;
3493 }
3494 } else {
3495 switch (rm & 7) {
3496 case 0x00: op->base=data->ds; op->rm = regAX; break;
3497 case 0x01: op->base=data->ds; op->rm = regCX; break;
3498 case 0x02: op->base=data->ds; op->rm = regDX; break;
3499 case 0x03: op->base=data->ds; op->rm = regBX; break;
3500 case 0x04: Sib1(data, op); break;
3501 case 0x05: op->base=data->ss; op->rm = regBP; break;
3502 case 0x06: op->base=data->ds; op->rm = regSI; break;
3503 case 0x07: op->base=data->ds; op->rm = regDI; break;
3504 }
3505 if (rm<0x80) {
3506 op->data.disp = (S8)data->fetch8();
3507 } else {
3508 op->data.disp = data->fetch32();
3509 }
3510 }
3511}
3512
3513void decodeEa(DecodeData* data, DecodedOp* op, U8 rm) {
3514 if (data->ea16)

Callers 1

decodeEaFunction · 0.85

Calls 4

Sib0Function · 0.85
Sib1Function · 0.85
fetch32Method · 0.80
fetch8Method · 0.80

Tested by

no test coverage detected