add finit/fninit/fwait

This commit is contained in:
MITSUNARI Shigeo 2012-11-01 15:16:27 +09:00
parent 0e1956bf0e
commit 8cb9480e50
6 changed files with 34 additions and 23 deletions

View file

@ -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 },

View file

@ -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

View file

@ -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モードがバグったのを修正

View file

@ -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",

View file

@ -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

View file

@ -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); }