diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-01-27 17:42:27 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-01-27 17:42:27 +0100 |
| commit | 3b8e0d69a3becc60d551acf4f0561ba1c2d015da (patch) | |
| tree | 522df3d93e9a58ae8fc51ecfec3e43a2774dd717 | |
| parent | 56f2749da075088fd70929bf8aaac827770daf2a (diff) | |
| download | box64-3b8e0d69a3becc60d551acf4f0561ba1c2d015da.tar.gz box64-3b8e0d69a3becc60d551acf4f0561ba1c2d015da.zip | |
[ARM64_DYNAREC][32BITS] Added 27 opcode
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_00.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c index 6d26ec95..3c825e2f 100644 --- a/src/dynarec/arm64/dynarec_arm64_00.c +++ b/src/dynarec/arm64/dynarec_arm64_00.c @@ -382,7 +382,19 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin i64 = F32S; emit_and32c(dyn, ninst, rex, xRAX, i64, x3, x4); break; - + case 0x27: + if(rex.is32bits) { + INST_NAME("DAA"); + MESSAGE(LOG_DUMP, "Need Optimization DAA\n"); + READFLAGS(X_AF|X_CF); + SETFLAGS(X_AF|X_CF|X_PF|X_SF|X_ZF, SF_SET); + UXTBx(x1, xRAX); + CALL_(daa8, x1, 0); + BFIz(xRAX, x1, 0, 8); + } else { + DEFAULT; + } + break; case 0x28: INST_NAME("SUB Eb, Gb"); SETFLAGS(X_ALL, SF_SET_PENDING); @@ -443,7 +455,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin SETFLAGS(X_AF|X_CF|X_PF|X_SF|X_ZF, SF_SET); UXTBx(x1, xRAX); CALL_(das8, x1, 0); - BFIx(xRAX, x1, 0, 8); + BFIz(xRAX, x1, 0, 8); } else { DEFAULT; } |