add finit/fninit/fwait
This commit is contained in:
parent
0e1956bf0e
commit
8cb9480e50
6 changed files with 34 additions and 23 deletions
|
@ -489,7 +489,8 @@ void put()
|
||||||
{ "rdpmc", 0x0F, B00110011 },
|
{ "rdpmc", 0x0F, B00110011 },
|
||||||
{ "rdtsc", 0x0F, B00110001 },
|
{ "rdtsc", 0x0F, B00110001 },
|
||||||
{ "rdtscp", 0x0F, 0x01, 0xF9 },
|
{ "rdtscp", 0x0F, 0x01, 0xF9 },
|
||||||
{ "wait", B10011011 },
|
{ "wait", 0x9B },
|
||||||
|
{ "fwait", 0x9B },
|
||||||
{ "wbinvd", 0x0F, B00001001 },
|
{ "wbinvd", 0x0F, B00001001 },
|
||||||
{ "wrmsr", 0x0F, B00110000 },
|
{ "wrmsr", 0x0F, B00110000 },
|
||||||
{ "xlatb", 0xD7 },
|
{ "xlatb", 0xD7 },
|
||||||
|
@ -515,6 +516,8 @@ void put()
|
||||||
{ "fdivp", 0xDE, 0xF9 },
|
{ "fdivp", 0xDE, 0xF9 },
|
||||||
{ "fdivrp", 0xDE, 0xF1 },
|
{ "fdivrp", 0xDE, 0xF1 },
|
||||||
{ "fincstp", 0xD9, 0xF7 },
|
{ "fincstp", 0xD9, 0xF7 },
|
||||||
|
{ "finit", 0x9B, 0xDB, 0xE3 },
|
||||||
|
{ "fninit", 0xDB, 0xE3 },
|
||||||
{ "fld1", 0xD9, 0xE8 },
|
{ "fld1", 0xD9, 0xE8 },
|
||||||
{ "fldl2t", 0xD9, 0xE9 },
|
{ "fldl2t", 0xD9, 0xE9 },
|
||||||
{ "fldl2e", 0xD9, 0xEA },
|
{ "fldl2e", 0xD9, 0xEA },
|
||||||
|
|
|
@ -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
|
Abstract
|
||||||
|
@ -222,6 +222,7 @@ http://opensource.org/licenses/BSD-3-Clause
|
||||||
History
|
History
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
* 2012/Nov/01 ver 3.62 add fwait/fnwait/finit/fninit
|
||||||
* 2012/Nov/01 ver 3.61 add fldcw/fstcw
|
* 2012/Nov/01 ver 3.61 add fldcw/fstcw
|
||||||
* 2012/May/03 ver 3.60 change interface of Allocator
|
* 2012/May/03 ver 3.60 change interface of Allocator
|
||||||
* 2012/Mar/23 ver 3.51 fix userPtr mode
|
* 2012/Mar/23 ver 3.51 fix userPtr mode
|
||||||
|
|
|
@ -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/11/01 ver 3.61 add fldcw/fstcw
|
||||||
2012/05/03 ver 3.60 Allocatorクラスのインタフェースを変更
|
2012/05/03 ver 3.60 Allocatorクラスのインタフェースを変更
|
||||||
2012/03/23 ver 3.51 userPtrモードがバグったのを修正
|
2012/03/23 ver 3.51 userPtrモードがバグったのを修正
|
||||||
|
|
|
@ -346,6 +346,7 @@ class Test {
|
||||||
"rdpmc",
|
"rdpmc",
|
||||||
"rdtsc",
|
"rdtsc",
|
||||||
"wait",
|
"wait",
|
||||||
|
"fwait",
|
||||||
"wbinvd",
|
"wbinvd",
|
||||||
"wrmsr",
|
"wrmsr",
|
||||||
"xlatb",
|
"xlatb",
|
||||||
|
@ -369,6 +370,8 @@ class Test {
|
||||||
"fdivp",
|
"fdivp",
|
||||||
"fdivrp",
|
"fdivrp",
|
||||||
"fincstp",
|
"fincstp",
|
||||||
|
"finit",
|
||||||
|
"fninit",
|
||||||
"fld1",
|
"fld1",
|
||||||
"fldl2t",
|
"fldl2t",
|
||||||
"fldl2e",
|
"fldl2e",
|
||||||
|
@ -379,25 +382,25 @@ class Test {
|
||||||
"fmulp",
|
"fmulp",
|
||||||
"fnop",
|
"fnop",
|
||||||
"fpatan",
|
"fpatan",
|
||||||
"fprem",
|
"fprem",
|
||||||
"fprem1",
|
"fprem1",
|
||||||
"fptan",
|
"fptan",
|
||||||
"frndint",
|
"frndint",
|
||||||
"fscale",
|
"fscale",
|
||||||
"fsin",
|
"fsin",
|
||||||
"fsincos",
|
"fsincos",
|
||||||
"fsqrt",
|
"fsqrt",
|
||||||
"fsubp",
|
"fsubp",
|
||||||
"fsubrp",
|
"fsubrp",
|
||||||
"ftst",
|
"ftst",
|
||||||
"fucom",
|
"fucom",
|
||||||
"fucomp",
|
"fucomp",
|
||||||
"fucompp",
|
"fucompp",
|
||||||
"fxam",
|
"fxam",
|
||||||
"fxch",
|
"fxch",
|
||||||
"fxtract",
|
"fxtract",
|
||||||
"fyl2x",
|
"fyl2x",
|
||||||
"fyl2xp1",
|
"fyl2xp1",
|
||||||
};
|
};
|
||||||
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||||
put(tbl[i]);
|
put(tbl[i]);
|
||||||
|
|
|
@ -55,7 +55,7 @@ namespace Xbyak {
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
DEFAULT_MAX_CODE_SIZE = 4096,
|
DEFAULT_MAX_CODE_SIZE = 4096,
|
||||||
VERSION = 0x3601 /* 0xABCD = A.BC(D) */
|
VERSION = 0x3602 /* 0xABCD = A.BC(D) */
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef MIE_INTEGER_TYPE_DEFINED
|
#ifndef MIE_INTEGER_TYPE_DEFINED
|
||||||
|
|
|
@ -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 packssdw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x6B); }
|
||||||
void packsswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x63); }
|
void packsswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x63); }
|
||||||
void packuswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x67); }
|
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 rdtsc() { db(0x0F); db(0x31); }
|
||||||
void rdtscp() { db(0x0F); db(0x01); db(0xF9); }
|
void rdtscp() { db(0x0F); db(0x01); db(0xF9); }
|
||||||
void wait() { db(0x9B); }
|
void wait() { db(0x9B); }
|
||||||
|
void fwait() { db(0x9B); }
|
||||||
void wbinvd() { db(0x0F); db(0x09); }
|
void wbinvd() { db(0x0F); db(0x09); }
|
||||||
void wrmsr() { db(0x0F); db(0x30); }
|
void wrmsr() { db(0x0F); db(0x30); }
|
||||||
void xlatb() { db(0xD7); }
|
void xlatb() { db(0xD7); }
|
||||||
|
@ -336,6 +337,8 @@ void fdecstp() { db(0xD9); db(0xF6); }
|
||||||
void fdivp() { db(0xDE); db(0xF9); }
|
void fdivp() { db(0xDE); db(0xF9); }
|
||||||
void fdivrp() { db(0xDE); db(0xF1); }
|
void fdivrp() { db(0xDE); db(0xF1); }
|
||||||
void fincstp() { db(0xD9); db(0xF7); }
|
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 fld1() { db(0xD9); db(0xE8); }
|
||||||
void fldl2t() { db(0xD9); db(0xE9); }
|
void fldl2t() { db(0xD9); db(0xE9); }
|
||||||
void fldl2e() { db(0xD9); db(0xEA); }
|
void fldl2e() { db(0xD9); db(0xEA); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue