fix fatal error of sub rsp, 1000

This commit is contained in:
MITSUNARI Shigeo 2010-05-24 15:16:40 +09:00
parent 412ddc63e0
commit 2965c4c0ba
6 changed files with 417 additions and 1927 deletions

View file

@ -1,5 +1,5 @@
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 2.25
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 2.26
-----------------------------------------------------------------------------
◎概要
@ -199,6 +199,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から
-----------------------------------------------------------------------------
◎履歴
2010/05/24 ver 2.26 fix sub(rsp, 1000)
2010/04/26 ver 2.25 add jc/jnc(I forgot to implement them...)
2010/04/16 ver 2.24 change the prototype of rewrite() method
2010/04/15 ver 2.23 fix align() and xbyak_util.h for Mac

View file

@ -1,5 +1,5 @@
Xbyak 2.25 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
Xbyak 2.26 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
-----------------------------------------------------------------------------
<Abstract>
@ -148,6 +148,7 @@ http://www.opensource.org/licenses/bsd-license.php
-----------------------------------------------------------------------------
<History>
2010/May/24 ver 2.26 fix sub(rsp, 1000)
2010/Apr/26 ver 2.25 add jc/jnc(I forgot to implement them...)
2010/Apr/16 ver 2.24 change the prototype of rewrite() method
2010/Apr/15 ver 2.23 fix align() and xbyak_util.h for Mac
@ -183,5 +184,5 @@ http://www.opensource.org/licenses/bsd-license.php
MITSUNARI Shigeo(herumi at nifty dot com)
---
$Revision: 1.45 $
$Date: 2010/04/26 06:40:29 $
$Revision: 1.46 $
$Date: 2010/05/24 06:13:44 $

View file

@ -746,6 +746,8 @@ class Test {
put(p, REG64|RAX, IMM8|NEG8);
put(p, REG64|RAX, "0x12345678", "0x12345678");
put(p, REG64|RAX, "192", "192");
put(p, REG64|RAX, "0x1234", "0x1234");
put(p, REG32|EAX, IMM8|IMM32|NEG8);
put(p, REG16|AX, IMM8|IMM16|NEG8|NEG16);
put(p, REG8|REG8_3|AL, IMM|NEG8);

File diff suppressed because it is too large Load diff

View file

@ -4,9 +4,9 @@
@file xbyak.h
@brief Xbyak ; JIT assembler for x86(IA32)/x64 by C++
@author herumi
@version $Revision: 1.186 $
@version $Revision: 1.188 $
@url http://homepage1.nifty.com/herumi/soft/xbyak.html
@date $Date: 2010/04/26 06:40:29 $
@date $Date: 2010/05/24 06:13:44 $
@note modified new BSD license
http://www.opensource.org/licenses/bsd-license.php
*/
@ -55,7 +55,7 @@ namespace Xbyak {
enum {
DEFAULT_MAX_CODE_SIZE = 2048,
VERSION = 0x2250, /* 0xABCD = A.BC(D) */
VERSION = 0x2260, /* 0xABCD = A.BC(D) */
};
#ifndef MIE_INTEGER_TYPE_DEFINED
@ -987,7 +987,7 @@ private:
uint32 immBit = inner::IsInDisp8(imm) ? 8 : isInDisp16(imm) ? 16 : 32;
if (op.getBit() < immBit) throw ERR_IMM_IS_TOO_BIG;
if (op.isREG()) {
if (immBit == 16 && op.isBit(32)) immBit = 32; /* don't use MEM16 if 32bit mode */
if (immBit == 16 && op.isBit(32|64)) immBit = 32; /* don't use MEM16 if 32/64bit mode */
}
if (op.isREG() && op.getIdx() == 0 && (op.getBit() == immBit || (op.isBit(64) && immBit == 32))) { // rax, eax, ax, al
rex(op);
@ -1394,7 +1394,7 @@ public:
bool hasUndefinedLabel() const { return label_.hasUndefinedLabel(); }
const uint8 *getCode() const
{
// assert(!hasUndefinedLabel());
assert(!hasUndefinedLabel());
// if (hasUndefinedLabel()) throw ERR_LABEL_IS_NOT_FOUND;
return top_;
}

View file

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