| 4332 | class DecodeGrp4_8 : public DecodeFunc { |
| 4333 | public: |
| 4334 | void decode(DecodeData* data, DecodedOp* op) const override { |
| 4335 | U8 rm = data->fetch8(); |
| 4336 | |
| 4337 | switch (G(rm)) { |
| 4338 | case 0x00: func(data, op, rm, IncR8, IncE8); break; |
| 4339 | case 0x01: func(data, op, rm, DecR8, DecE8); break; |
| 4340 | case 0x07: { |
| 4341 | #ifdef BOXEDWINE_64 |
| 4342 | U64 address = data->fetch32(); |
| 4343 | address |= ((U64)data->fetch32()) << 32; |
| 4344 | op->pfn = (OpCallback)address; |
| 4345 | #else |
| 4346 | op->pfn = (OpCallback)(uintptr_t)data->fetch32(); |
| 4347 | #endif |
| 4348 | op->inst = Callback; |
| 4349 | break; |
| 4350 | } |
| 4351 | default: op->inst = Invalid; op->reg = rm; op->imm = data->inst; break; |
| 4352 | } |
| 4353 | } |
| 4354 | }; |
| 4355 | |
| 4356 | class DecodeGrp5_16 : public DecodeFunc { |