diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2023-03-23 16:27:04 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-23 09:27:04 +0100 |
| commit | 44524c057d1e3329ef9a4302b3cfaa371300b06c (patch) | |
| tree | fa00dc0881a5371163b5dcdf39713af5944c994d /src | |
| parent | a42322be998494490918884a9bf564a8cff6a5fc (diff) | |
| download | box64-44524c057d1e3329ef9a4302b3cfaa371300b06c.tar.gz box64-44524c057d1e3329ef9a4302b3cfaa371300b06c.zip | |
[RV64_DYNAREC] Added more opcodes (#625)
* [RV64_DYNAREC] Added 0B OR opcode * [RV64_DYNAREC] Added 35 XOR opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_00.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_00.c b/src/dynarec/rv64/dynarec_rv64_00.c index af559d3b..c53679b2 100644 --- a/src/dynarec/rv64/dynarec_rv64_00.c +++ b/src/dynarec/rv64/dynarec_rv64_00.c @@ -98,7 +98,14 @@ uintptr_t dynarec64_00(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni emit_or8(dyn, ninst, x1, x2, x3, x4); GBBACK(x5); break; - + case 0x0B: + INST_NAME("OR Gd, Ed"); + SETFLAGS(X_ALL, SF_SET_PENDING); + nextop = F8; + GETGD; + GETED(0); + emit_or32(dyn, ninst, rex, gd, ed, x3, x4); + break; case 0x0D: INST_NAME("OR EAX, Id"); SETFLAGS(X_ALL, SF_SET_PENDING); @@ -200,6 +207,12 @@ uintptr_t dynarec64_00(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni GETED(0); emit_xor32(dyn, ninst, rex, gd, ed, x3, x4); break; + case 0x35: + INST_NAME("XOR EAX, Id"); + SETFLAGS(X_ALL, SF_SET_PENDING); + i64 = F32S; + emit_xor32c(dyn, ninst, rex, xRAX, i64, x3, x4); + break; case 0x38: INST_NAME("CMP Eb, Gb"); SETFLAGS(X_ALL, SF_SET_PENDING); |