recover Xbyak::CastTo

This commit is contained in:
MITSUNARI Shigeo 2018-10-31 09:44:58 +09:00
parent d09a230fbc
commit bc70e7e11a
4 changed files with 13 additions and 6 deletions

View File

@ -1,5 +1,5 @@
# Xbyak 5.75 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
# Xbyak 5.751 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
## Abstract
@ -392,6 +392,7 @@ modified new BSD License
http://opensource.org/licenses/BSD-3-Clause
## History
* 2018/Oct/31 ver 5.751 recover Xbyak::CastTo for compatibility
* 2018/Oct/29 ver 5.75 unlink LabelManager from Label when msg is destroyed
* 2018/Oct/21 ver 5.74 support RegRip +/- int. Xbyak::CastTo is removed
* 2018/Oct/15 util::AddressFrame uses push/pop instead of mov

View File

@ -1,5 +1,5 @@
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.75
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.751
-----------------------------------------------------------------------------
◎概要
@ -373,8 +373,9 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から
-----------------------------------------------------------------------------
◎履歴
2018/10/29 LabelManagerのデストラクタでLabelから参照を切り離す
2018/10/21 RegRip +/intの形をサポート Xbyak::CastToを削除
2018/10/31 ver 5.751 互換性のためにXbyak::CastToの復元
2018/10/29 ver 5.75 LabelManagerのデストラクタでLabelから参照を切り離す
2018/10/21 ver 5.74 RegRip +/intの形をサポート Xbyak::CastToを削除
2018/10/15 util::StackFrameでmovの代わりにpush/popを使う
2018/09/19 ver 5.73 vpslld, vpslldq, vpsllwなどの(reg, mem, imm8)に対するevexエンコーディング修整
2018/09/19 ver 5.72 fix the encoding of vinsertps for disp8N(Thanks to petercaday)

View File

@ -113,7 +113,7 @@ namespace Xbyak {
enum {
DEFAULT_MAX_CODE_SIZE = 4096,
VERSION = 0x5750 /* 0xABCD = A.BC(D) */
VERSION = 0x5751 /* 0xABCD = A.BC(D) */
};
#ifndef MIE_INTEGER_TYPE_DEFINED
@ -283,6 +283,11 @@ inline void AlignedFree(void *p)
#endif
}
template<class To, class From>
inline const To CastTo(From p) throw()
{
return (const To)(size_t)(p);
}
namespace inner {
static const size_t ALIGN_PAGE_SIZE = 4096;

View File

@ -1,4 +1,4 @@
const char *getVersionString() const { return "5.75"; }
const char *getVersionString() const { return "5.751"; }
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); }