diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index 2ad8c59..b3a961a 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -665,6 +665,7 @@ void put() { "cmpsd", 0xA7 }, { "endbr32", 0xF3, 0x0F, 0x1E, 0xFB }, { "endbr64", 0xF3, 0x0F, 0x1E, 0xFA }, + { "hlt", 0xF4 }, { "int3", 0xCC }, { "scasb", 0xAE }, { "scasw", 0x66, 0xAF }, diff --git a/test/make_nm.cpp b/test/make_nm.cpp index 6fd875a..b797df5 100644 --- a/test/make_nm.cpp +++ b/test/make_nm.cpp @@ -512,6 +512,7 @@ class Test { "cmpsb", "cmpsw", "cmpsd", + "hlt", "int3", "leave", "lodsb", diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 7369bd7..8954949 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -323,6 +323,7 @@ void gf2p8affineqb(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, void gf2p8mulb(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0xCF, 0x66, isXMM_XMMorMEM, NONE, 0x38); } void haddpd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x7C, 0x66, isXMM_XMMorMEM); } void haddps(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x7C, 0xF2, isXMM_XMMorMEM); } +void hlt() { db(0xF4); } void hsubpd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x7D, 0x66, isXMM_XMMorMEM); } void hsubps(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x7D, 0xF2, isXMM_XMMorMEM); } void idiv(const Operand& op) { opR_ModM(op, 0, 7, 0xF6); } @@ -333,7 +334,6 @@ void inc(const Operand& op) { opIncDec(op, 0x40, 0); } void insertps(const Xmm& xmm, const Operand& op, uint8_t imm) { opGen(xmm, op, 0x21, 0x66, isXMM_XMMorMEM, imm, 0x3A); } void int3() { db(0xCC); } void int_(uint8_t x) { db(0xCD); db(x); } -void hlt() { db(0xF4); } void ja(const Label& label, LabelType type = T_AUTO) { opJmp(label, type, 0x77, 0x87, 0x0F); }//-V524 void ja(const char *label, LabelType type = T_AUTO) { ja(std::string(label), type); }//-V524 void ja(const void *addr) { opJmpAbs(addr, T_NEAR, 0x77, 0x87, 0x0F); }//-V524