diff options
author | MITSUNARI Shigeo <[email protected]> | 2021-05-10 09:22:26 +0900 |
---|---|---|
committer | MITSUNARI Shigeo <[email protected]> | 2021-05-10 09:22:26 +0900 |
commit | a34850b2df66a186c8d947b4d72acc839926321f (patch) | |
tree | c66636495bd83c95620a103c7eabd936066ac0a1 | |
parent | 590c10e3746978dbfcf102d6da933ac2659e4544 (diff) | |
download | xbyak-a34850b2df66a186c8d947b4d72acc839926321f.tar.gz xbyak-a34850b2df66a186c8d947b4d72acc839926321f.zip |
add endbr32 and endbr64v5.992
-rw-r--r-- | gen/gen_code.cpp | 4 | ||||
-rw-r--r-- | readme.md | 3 | ||||
-rw-r--r-- | readme.txt | 3 | ||||
-rw-r--r-- | xbyak/xbyak.h | 2 | ||||
-rw-r--r-- | xbyak/xbyak_mnemonic.h | 4 |
5 files changed, 12 insertions, 4 deletions
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index 90f2967..f3b23e8 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -26,6 +26,7 @@ struct GenericTbl { uint8_t code1; uint8_t code2; uint8_t code3; + uint8_t code4; }; void putGeneric(const GenericTbl *p, size_t n) @@ -34,6 +35,7 @@ void putGeneric(const GenericTbl *p, size_t n) printf("void %s() { db(0x%02X); ", p->name, p->code1); if (p->code2) printf("db(0x%02X); ", p->code2); if (p->code3) printf("db(0x%02X); ", p->code3); + if (p->code4) printf("db(0x%02X); ", p->code4); printf("}\n"); p++; } @@ -661,6 +663,8 @@ void put() { "cmpsb", 0xA6 }, { "cmpsw", 0x66, 0xA7 }, { "cmpsd", 0xA7 }, + { "endbr32", 0xF3, 0x0F, 0x1E, 0xFB }, + { "endbr64", 0xF3, 0x0F, 0x1E, 0xFA }, { "int3", 0xCC }, { "scasb", 0xAE }, { "scasw", 0x66, 0xAF }, @@ -1,6 +1,6 @@ [![Build Status](https://github.com/herumi/xbyak/actions/workflows/main.yml/badge.svg)](https://github.com/herumi/xbyak/actions/workflows/main.yml) -# Xbyak 5.991 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ +# Xbyak 5.992 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ ## Abstract @@ -446,6 +446,7 @@ modified new BSD License http://opensource.org/licenses/BSD-3-Clause ## History +* 2021/May/09 ver 5.992 support endbr32 and endbr64 * 2020/Nov/16 ver 5.991 disable constexpr for gcc-5 with -std=c++-14 * 2020/Oct/19 ver 5.99 support VNNI instructions(Thanks to akharito) * 2020/Oct/17 ver 5.98 support the form of [scale * reg] @@ -1,5 +1,5 @@ - C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.991
+ C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.992
-----------------------------------------------------------------------------
◎概要
@@ -382,6 +382,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から -----------------------------------------------------------------------------
◎履歴
+2021/05/09 ver 5.992 endbr32とendbr64のサポート
2020/11/16 ver 5.991 g++-5のC++14でconstexpr機能の抑制
2020/10/19 ver 5.99 VNNI命令サポート(Thanks to akharito)
2020/10/17 ver 5.98 [scale * reg]のサポート
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index bc0d71f..bf92ae4 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -138,7 +138,7 @@ namespace Xbyak { enum { DEFAULT_MAX_CODE_SIZE = 4096, - VERSION = 0x5991 /* 0xABCD = A.BC(D) */ + VERSION = 0x5992 /* 0xABCD = A.BC(D) */ }; #ifndef MIE_INTEGER_TYPE_DEFINED diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 5c1ecff..be9bbbf 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -1,4 +1,4 @@ -const char *getVersionString() const { return "5.991"; } +const char *getVersionString() const { return "5.992"; } void adc(const Operand& op, uint32_t imm) { opRM_I(op, imm, 0x10, 2); } void adc(const Operand& op1, const Operand& op2) { opRM_RM(op1, op2, 0x10); } void adcx(const Reg32e& reg, const Operand& op) { opGen(reg, op, 0xF6, 0x66, isREG32_REG32orMEM, NONE, 0x38); } @@ -172,6 +172,8 @@ void divss(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x5E, 0xF3, isXMM void dppd(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x41, 0x66, isXMM_XMMorMEM, static_cast<uint8_t>(imm), 0x3A); } void dpps(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x40, 0x66, isXMM_XMMorMEM, static_cast<uint8_t>(imm), 0x3A); } void emms() { db(0x0F); db(0x77); } +void endbr32() { db(0xF3); db(0x0F); db(0x1E); db(0xFB); } +void endbr64() { db(0xF3); db(0x0F); db(0x1E); db(0xFA); } void enter(uint16_t x, uint8_t y) { db(0xC8); dw(x); db(y); } void extractps(const Operand& op, const Xmm& xmm, uint8_t imm) { opExt(op, xmm, 0x17, imm); } void f2xm1() { db(0xD9); db(0xF0); } |