aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--readme.md3
-rw-r--r--readme.txt3
-rw-r--r--sample/test0.cpp7
-rw-r--r--xbyak/xbyak.h6
-rw-r--r--xbyak/xbyak_mnemonic.h2
5 files changed, 13 insertions, 8 deletions
diff --git a/readme.md b/readme.md
index 9b8ab74..5e217ce 100644
--- a/readme.md
+++ b/readme.md
@@ -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
diff --git a/readme.txt b/readme.txt
index 4f17d00..83038eb 100644
--- a/readme.txt
+++ b/readme.txt
@@ -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); }