diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index 9a12d4f..c638752 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -489,7 +489,8 @@ void put() { "rdpmc", 0x0F, B00110011 }, { "rdtsc", 0x0F, B00110001 }, { "rdtscp", 0x0F, 0x01, 0xF9 }, - { "wait", B10011011 }, + { "wait", 0x9B }, + { "fwait", 0x9B }, { "wbinvd", 0x0F, B00001001 }, { "wrmsr", 0x0F, B00110000 }, { "xlatb", 0xD7 }, @@ -515,6 +516,8 @@ void put() { "fdivp", 0xDE, 0xF9 }, { "fdivrp", 0xDE, 0xF1 }, { "fincstp", 0xD9, 0xF7 }, + { "finit", 0x9B, 0xDB, 0xE3 }, + { "fninit", 0xDB, 0xE3 }, { "fld1", 0xD9, 0xE8 }, { "fldl2t", 0xD9, 0xE9 }, { "fldl2e", 0xD9, 0xEA }, diff --git a/readme.md b/readme.md index f6a24ee..609c77b 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,5 @@ -Xbyak 3.61 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ +Xbyak 3.62 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ ============= Abstract @@ -222,6 +222,7 @@ http://opensource.org/licenses/BSD-3-Clause History ------------- +* 2012/Nov/01 ver 3.62 add fwait/fnwait/finit/fninit * 2012/Nov/01 ver 3.61 add fldcw/fstcw * 2012/May/03 ver 3.60 change interface of Allocator * 2012/Mar/23 ver 3.51 fix userPtr mode diff --git a/readme.txt b/readme.txt index 4102528..09ce37c 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ - C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 3.61 + C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 3.62 ----------------------------------------------------------------------------- ◎概要 @@ -242,6 +242,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から ----------------------------------------------------------------------------- ◎履歴 +2012/11/01 ver 3.62 add fwait/fnwait/finit/fninit 2012/11/01 ver 3.61 add fldcw/fstcw 2012/05/03 ver 3.60 Allocatorクラスのインタフェースを変更 2012/03/23 ver 3.51 userPtrモードがバグったのを修正 diff --git a/test/make_nm.cpp b/test/make_nm.cpp index 885d887..70d154b 100644 --- a/test/make_nm.cpp +++ b/test/make_nm.cpp @@ -346,6 +346,7 @@ class Test { "rdpmc", "rdtsc", "wait", + "fwait", "wbinvd", "wrmsr", "xlatb", @@ -369,6 +370,8 @@ class Test { "fdivp", "fdivrp", "fincstp", + "finit", + "fninit", "fld1", "fldl2t", "fldl2e", @@ -379,25 +382,25 @@ class Test { "fmulp", "fnop", "fpatan", - "fprem", - "fprem1", - "fptan", - "frndint", - "fscale", + "fprem", + "fprem1", + "fptan", + "frndint", + "fscale", "fsin", - "fsincos", - "fsqrt", - "fsubp", - "fsubrp", - "ftst", - "fucom", - "fucomp", - "fucompp", - "fxam", - "fxch", - "fxtract", - "fyl2x", - "fyl2xp1", + "fsincos", + "fsqrt", + "fsubp", + "fsubrp", + "ftst", + "fucom", + "fucomp", + "fucompp", + "fxam", + "fxch", + "fxtract", + "fyl2x", + "fyl2xp1", }; for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) { put(tbl[i]); diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index 4b8d10c..e309293 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -55,7 +55,7 @@ namespace Xbyak { enum { DEFAULT_MAX_CODE_SIZE = 4096, - VERSION = 0x3601 /* 0xABCD = A.BC(D) */ + VERSION = 0x3602 /* 0xABCD = A.BC(D) */ }; #ifndef MIE_INTEGER_TYPE_DEFINED diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 54a82cc..9df79ee 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -1,4 +1,4 @@ -const char *getVersionString() const { return "3.601"; } +const char *getVersionString() const { return "3.602"; } 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); } @@ -316,6 +316,7 @@ void rdpmc() { db(0x0F); db(0x33); } void rdtsc() { db(0x0F); db(0x31); } void rdtscp() { db(0x0F); db(0x01); db(0xF9); } void wait() { db(0x9B); } +void fwait() { db(0x9B); } void wbinvd() { db(0x0F); db(0x09); } void wrmsr() { db(0x0F); db(0x30); } void xlatb() { db(0xD7); } @@ -336,6 +337,8 @@ void fdecstp() { db(0xD9); db(0xF6); } void fdivp() { db(0xDE); db(0xF9); } void fdivrp() { db(0xDE); db(0xF1); } void fincstp() { db(0xD9); db(0xF7); } +void finit() { db(0x9B); db(0xDB); db(0xE3); } +void fninit() { db(0xDB); db(0xE3); } void fld1() { db(0xD9); db(0xE8); } void fldl2t() { db(0xD9); db(0xE9); } void fldl2e() { db(0xD9); db(0xEA); }