supprt retf
This commit is contained in:
parent
1abfc3465f
commit
08f11817c4
3 changed files with 5 additions and 0 deletions
|
@ -1045,6 +1045,7 @@ void put()
|
||||||
puts("void lea(const Reg& reg, const Address& addr) { if (!reg.isBit(16 | i32e)) XBYAK_THROW(ERR_BAD_SIZE_OF_REGISTER) opModM(addr, reg, 0x8D); }");
|
puts("void lea(const Reg& reg, const Address& addr) { if (!reg.isBit(16 | i32e)) XBYAK_THROW(ERR_BAD_SIZE_OF_REGISTER) opModM(addr, reg, 0x8D); }");
|
||||||
puts("void bswap(const Reg32e& reg) { opModR(Reg32(1), reg, 0x0F); }");
|
puts("void bswap(const Reg32e& reg) { opModR(Reg32(1), reg, 0x0F); }");
|
||||||
puts("void ret(int imm = 0) { if (imm) { db(0xC2); dw(imm); } else { db(0xC3); } }");
|
puts("void ret(int imm = 0) { if (imm) { db(0xC2); dw(imm); } else { db(0xC3); } }");
|
||||||
|
puts("void retf(int imm = 0) { if (imm) { db(0xCA); dw(imm); } else { db(0xCB); } }");
|
||||||
|
|
||||||
puts("void xadd(const Operand& op, const Reg& reg) { opModRM(reg, op, (op.isREG() && reg.isREG() && op.getBit() == reg.getBit()), op.isMEM(), 0x0F, 0xC0 | (reg.isBit(8) ? 0 : 1)); }");
|
puts("void xadd(const Operand& op, const Reg& reg) { opModRM(reg, op, (op.isREG() && reg.isREG() && op.getBit() == reg.getBit()), op.isMEM(), 0x0F, 0xC0 | (reg.isBit(8) ? 0 : 1)); }");
|
||||||
puts("void cmpxchg(const Operand& op, const Reg& reg) { opModRM(reg, op, (op.isREG() && reg.isREG() && op.getBit() == reg.getBit()), op.isMEM(), 0x0F, 0xB0 | (reg.isBit(8) ? 0 : 1)); }");
|
puts("void cmpxchg(const Operand& op, const Reg& reg) { opModRM(reg, op, (op.isREG() && reg.isREG() && op.getBit() == reg.getBit()), op.isMEM(), 0x0F, 0xB0 | (reg.isBit(8) ? 0 : 1)); }");
|
||||||
|
|
|
@ -1276,6 +1276,9 @@ class Test {
|
||||||
const char *p = "ret";
|
const char *p = "ret";
|
||||||
put(p);
|
put(p);
|
||||||
put(p, IMM);
|
put(p, IMM);
|
||||||
|
p = "retf";
|
||||||
|
put(p);
|
||||||
|
put(p, IMM);
|
||||||
p = "mov";
|
p = "mov";
|
||||||
put(p, EAX|REG32|MEM|MEM_ONLY_DISP, REG32|EAX);
|
put(p, EAX|REG32|MEM|MEM_ONLY_DISP, REG32|EAX);
|
||||||
put(p, REG64|MEM|MEM_ONLY_DISP, REG64|RAX);
|
put(p, REG64|MEM|MEM_ONLY_DISP, REG64|RAX);
|
||||||
|
|
|
@ -720,6 +720,7 @@ void repne() { db(0xF2); }
|
||||||
void repnz() { db(0xF2); }
|
void repnz() { db(0xF2); }
|
||||||
void repz() { db(0xF3); }
|
void repz() { db(0xF3); }
|
||||||
void ret(int imm = 0) { if (imm) { db(0xC2); dw(imm); } else { db(0xC3); } }
|
void ret(int imm = 0) { if (imm) { db(0xC2); dw(imm); } else { db(0xC3); } }
|
||||||
|
void retf(int imm = 0) { if (imm) { db(0xCA); dw(imm); } else { db(0xCB); } }
|
||||||
void rol(const Operand& op, const Reg8& _cl) { opShift(op, _cl, 0); }
|
void rol(const Operand& op, const Reg8& _cl) { opShift(op, _cl, 0); }
|
||||||
void rol(const Operand& op, int imm) { opShift(op, imm, 0); }
|
void rol(const Operand& op, int imm) { opShift(op, imm, 0); }
|
||||||
void ror(const Operand& op, const Reg8& _cl) { opShift(op, _cl, 1); }
|
void ror(const Operand& op, const Reg8& _cl) { opShift(op, _cl, 1); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue