diff options
-rw-r--r-- | readme.md | 3 | ||||
-rw-r--r-- | readme.txt | 3 | ||||
-rw-r--r-- | sample/test0.cpp | 7 | ||||
-rw-r--r-- | xbyak/xbyak.h | 6 | ||||
-rw-r--r-- | xbyak/xbyak_mnemonic.h | 2 |
5 files changed, 13 insertions, 8 deletions
@@ -1,5 +1,5 @@ -Xbyak 5.66 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ +Xbyak 5.661 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ ============= Abstract @@ -333,6 +333,7 @@ The header files under xbyak/ are independent of cybozulib. History ------------- +* 2018/Jul/26 ver 5.661 support mingw64 * 2018/Jul/24 ver 5.66 add CodeArray::PROTECT_RE to mode of protect() * 2018/Jun/26 ver 5.65 fix push(qword [mem]) * 2018/Mar/07 ver 5.64 fix zero division in Cpu() on some cpu @@ -1,5 +1,5 @@ - C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.66
+ C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.661
-----------------------------------------------------------------------------
◎概要
@@ -343,6 +343,7 @@ cybozulibは単体テストでのみ利用されていて、xbyak/ディレク� -----------------------------------------------------------------------------
◎履歴
+2018/07/26 ver 5.661 mingw64対応
2018/07/24 ver 5.66 protect()のmodeにCodeArray::PROTECT_REを追加
2018/06/26 ver 5.65 fix push(qword [mem])
2018/03/07 ver 5.64 Cpu()の中でzero divisionが出ることがあるのを修正
diff --git a/sample/test0.cpp b/sample/test0.cpp index eabd745..cd19e48 100644 --- a/sample/test0.cpp +++ b/sample/test0.cpp @@ -162,11 +162,14 @@ int main() { // use memory allocated by user using namespace Xbyak; - const size_t codeSize = 1024; + const size_t codeSize = 4096; uint8 buf[codeSize + 16]; uint8 *p = CodeArray::getAlignedAddress(buf); Sample s(p, codeSize); - CodeArray::protect(p, codeSize, CodeArray::PROTECT_RE); + if (!CodeArray::protect(p, codeSize, CodeArray::PROTECT_RWE)) { + fprintf(stderr, "can't protect\n"); + return 1; + } int (*func)(int) = s.getCode<int (*)(int)>(); if (Xbyak::CastTo<uint8*>(func) != p) { fprintf(stderr, "internal error %p %p\n", p, Xbyak::CastTo<uint8*>(func)); diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index c33f085..aa4ce87 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -105,7 +105,7 @@ namespace Xbyak { enum { DEFAULT_MAX_CODE_SIZE = 4096, - VERSION = 0x5660 /* 0xABCD = A.BC(D) */ + VERSION = 0x5661 /* 0xABCD = A.BC(D) */ }; #ifndef MIE_INTEGER_TYPE_DEFINED @@ -970,7 +970,7 @@ public: */ static inline bool protect(const void *addr, size_t size, int protectMode) { -#if defined(_MSC_VER) +#if defined(_WIN32) const DWORD c_rw = PAGE_READWRITE; const DWORD c_rwe = PAGE_EXECUTE_READWRITE; const DWORD c_re = PAGE_EXECUTE_READ; @@ -988,7 +988,7 @@ public: default: return false; } -#if defined(_MSC_VER) +#if defined(_WIN32) DWORD oldProtect; return VirtualProtect(const_cast<void*>(addr), size, mode, &oldProtect) != 0; #elif defined(__GNUC__) diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 07dd8f3..9be9e65 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -1,4 +1,4 @@ -const char *getVersionString() const { return "5.66"; } +const char *getVersionString() const { return "5.661"; } void adc(const Operand& op, uint32 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); } |