add setSize

This commit is contained in:
MITSUNARI Shigeo 2013-01-15 15:37:48 +09:00
parent 9206af36bf
commit f473d69dc7
4 changed files with 11 additions and 4 deletions

View File

@ -1,5 +1,5 @@
Xbyak 3.74 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
Xbyak 3.75 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
=============
Abstract
@ -223,6 +223,7 @@ http://opensource.org/licenses/BSD-3-Clause
History
-------------
* 2013/Jan/15 ver 3.75 add setSize() to modify generated code
* 2013/Jan/12 ver 3.74 add CodeGenerator::reset() ; add Allocator::useProtect()
* 2013/Jan/06 ver 3.73 use unordered_map if possible
* 2012/Dec/04 ver 3.72 eax, ebx, ... are member variables of CodeGenerator(revert), Xbyak::util::eax, ... are static const.

View File

@ -1,5 +1,5 @@
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 3.74
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 3.75
-----------------------------------------------------------------------------
◎概要
@ -244,6 +244,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から
-----------------------------------------------------------------------------
◎履歴
2013/01/15 ver 3.75 生成されたコードを修正するためにsetSize()を追加
2013/01/12 ver 3.74 CodeGenerator::reset()とAllocator::useProtect()を追加
2013/01/06 ver 3.73 可能ならunordered_mapを使う
2012/12/04 ver 3.72 eaxなどをCodeGeneratorのメンバ変数に戻す. Xbyak::util::eaxはstatic const変数

View File

@ -72,7 +72,7 @@ namespace Xbyak {
enum {
DEFAULT_MAX_CODE_SIZE = 4096,
VERSION = 0x3740 /* 0xABCD = A.BC(D) */
VERSION = 0x3750 /* 0xABCD = A.BC(D) */
};
#ifndef MIE_INTEGER_TYPE_DEFINED
@ -587,6 +587,11 @@ public:
template<class F>
const F getCurr() const { return CastTo<F>(&top_[size_]); }
size_t getSize() const { return size_; }
void setSize(size_t size)
{
if (size >= maxSize_) throw ERR_OFFSET_IS_TOO_BIG;
size_ = size;
}
void dump() const
{
const uint8 *p = getCode();

View File

@ -1,4 +1,4 @@
const char *getVersionString() const { return "3.74"; }
const char *getVersionString() const { return "3.75"; }
void packssdw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x6B); }
void packsswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x63); }
void packuswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x67); }