diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index 0c71cca..4cf6636 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -1117,8 +1117,8 @@ void put() puts("void tpause(const Reg32& r) { int idx = r.getIdx(); if (idx > 7) XBYAK_THROW(ERR_BAD_PARAMETER) db(0x66); db(0x0F); db(0xAE); setModRM(3, 6, idx); }"); puts("void umonitor(const Reg& r) { int idx = r.getIdx(); if (idx > 7) XBYAK_THROW(ERR_BAD_PARAMETER) int bit = r.getBit(); if (BIT != bit) { if ((BIT == 32 && bit == 16) || (BIT == 64 && bit == 32)) { db(0x67); } else { XBYAK_THROW(ERR_BAD_SIZE_OF_REGISTER) } } db(0xF3); db(0x0F); db(0xAE); setModRM(3, 6, idx); }"); puts("void umwait(const Reg32& r) { int idx = r.getIdx(); if (idx > 7) XBYAK_THROW(ERR_BAD_PARAMETER) db(0xF2); db(0x0F); db(0xAE); setModRM(3, 6, idx); }"); - puts("void clwb(const Address& addr) { db(0x66); opMIB(addr, esi, 0x0F, 0xAE); }"); - puts("void cldemote(const Address& addr) { opMIB(addr, eax, 0x0F, 0x1C); }"); + puts("void clwb(const Address& addr) { db(0x66); opModM(addr, esi, 0x0F, 0xAE); }"); + puts("void cldemote(const Address& addr) { opModM(addr, eax, 0x0F, 0x1C); }"); puts("void xabort(uint8_t imm) { db(0xC6); db(0xF8); db(imm); }"); puts("void xbegin(uint32_t rel) { db(0xC7); db(0xF8); dd(rel); }"); diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index edc76c5..bb159ac 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -61,11 +61,11 @@ void cbw() { db(0x66); db(0x98); } void cdq() { db(0x99); } void clc() { db(0xF8); } void cld() { db(0xFC); } -void cldemote(const Address& addr) { opMIB(addr, eax, 0x0F, 0x1C); } +void cldemote(const Address& addr) { opModM(addr, eax, 0x0F, 0x1C); } void clflush(const Address& addr) { opModM(addr, Reg32(7), 0x0F, 0xAE); } void clflushopt(const Address& addr) { db(0x66); opModM(addr, Reg32(7), 0x0F, 0xAE); } void cli() { db(0xFA); } -void clwb(const Address& addr) { db(0x66); opMIB(addr, esi, 0x0F, 0xAE); } +void clwb(const Address& addr) { db(0x66); opModM(addr, esi, 0x0F, 0xAE); } void clzero() { db(0x0F); db(0x01); db(0xFC); } void cmc() { db(0xF5); } void cmova(const Reg& reg, const Operand& op) { opModRM(reg, op, op.isREG(16 | i32e), op.isMEM(), 0x0F, 0x40 | 7); }//-V524