| 2866 | } |
| 2867 | |
| 2868 | void OpDispatchBuilder::AAAOp(OpcodeArgs) { |
| 2869 | auto A = LoadGPRRegister(X86State::REG_RAX); |
| 2870 | auto AF = CalculateAFForDecimal(A); |
| 2871 | |
| 2872 | // CF = AF, OF/SF/ZF/PF undefined |
| 2873 | SetCFDirect_InvalidateNZV(AF); |
| 2874 | SetAFAndFixup(AF); |
| 2875 | CalculateDeferredFlags(); |
| 2876 | |
| 2877 | // AX = CF ? (AX + 0x106) : 0 |
| 2878 | A = NZCVSelect(OpSize::i32Bit, {COND_UGE} /* CF = 1 */, Add(OpSize::i32Bit, A, 0x106), A); |
| 2879 | |
| 2880 | // AL = AL & 0x0F |
| 2881 | A = _And(OpSize::i32Bit, A, Constant(0xFF0F)); |
| 2882 | StoreGPRRegister(X86State::REG_RAX, A, OpSize::i16Bit); |
| 2883 | } |
| 2884 | |
| 2885 | void OpDispatchBuilder::AASOp(OpcodeArgs) { |
| 2886 | auto A = LoadGPRRegister(X86State::REG_RAX); |
nothing calls this directly
no outgoing calls
no test coverage detected