Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

/ray/src/vm/instruction/instruction.cc

Go to the documentation of this file.
00001 /*
00002  * vm/instruction.cc
00003  * 
00004  * VM instructions. 
00005  * 
00006  * Copyright (c) 2004 by Wolfgang Wieser ] wwieser (a) gmx <*> de [ 
00007  * 
00008  * This file may be distributed and/or modified under the terms of the 
00009  * GNU General Public License version 2 as published by the Free Software 
00010  * Foundation. (See COPYING.GPL for details.)
00011  * 
00012  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00013  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00014  * 
00015  */
00016 
00017 #include "instruction.h"
00018 
00019 namespace VM
00020 {
00021 namespace INST
00022 {
00023 
00024 const DescEntry _inst_desc[IID_LAST]=
00025 {
00026     {  2, AC_void, "nop", 0, 0, 0 },
00027     {  2, AC_void, "hlt", 0, 0, 0 },
00028 
00029     {  4, AC_bb, "plb",     0, 0, 0 },
00030     {  6, AC_sb, "pls",     0, 0, 0 },
00031     {  8, AC_ib, "pli",     0, 0, 0 },
00032     { 12, AC_lb, "pll",     0, 0, 0 },
00033     {  8, AC_fb, "plf",     0, 0, 0 },
00034     { 12, AC_db, "pld",     0, 0, 0 },
00035     { 12, AC_ffb, "plf2",   0, 0, 0 },
00036     { 20, AC_ddb, "pld2",   0, 0, 0 },
00037     { 16, AC_fffb, "plf3",  0, 0, 0 },
00038     { 28, AC_dddb, "pld3",  0, 0, 0 },
00039     { 20, AC_ffffb, "plf4", 0, 0, 0 },
00040     { 36, AC_ddddb, "pld4", 0, 0, 0 },
00041 
00042     {  2, AC_void, "pln", 0, 0, 0 },
00043 
00044     {  8, AC_ib, "psb",  0, 0, 0 },
00045     {  8, AC_ib, "pss",  0, 0, 0 },
00046     {  8, AC_ib, "psi",  0, 0, 0 },
00047     {  8, AC_ib, "psl",  0, 0, 0 },
00048     {  8, AC_ib, "psp",  0, 0, 0 },
00049     {  8, AC_ib, "psa",  0, 0, 0 },
00050     {  8, AC_ib, "psf",  0, 0, 0 },
00051     {  8, AC_ib, "psd",  0, 0, 0 },
00052     {  8, AC_ib, "psf2", 0, 0, 0 },
00053     {  8, AC_ib, "psd2", 0, 0, 0 },
00054     {  8, AC_ib, "psf3", 0, 0, 0 },
00055     {  8, AC_ib, "psd3", 0, 0, 0 },
00056     {  8, AC_ib, "psf4", 0, 0, 0 },
00057     {  8, AC_ib, "psd4", 0, 0, 0 },
00058 
00059     {  8, AC_Sb, "pgb",  0, 0, 4 },
00060     {  8, AC_Sb, "pgs",  0, 0, 4 },
00061     {  8, AC_Sb, "pgi",  0, 0, 4 },
00062     {  8, AC_Sb, "pgl",  0, 0, 4 },
00063     {  8, AC_Sb, "pgp",  0, 0, 4 },
00064     {  8, AC_Sb, "pga",  0, 0, 4 },
00065     {  8, AC_Sb, "pgf",  0, 0, 4 },
00066     {  8, AC_Sb, "pgd",  0, 0, 4 },
00067     {  8, AC_Sb, "pgf2", 0, 0, 4 },
00068     {  8, AC_Sb, "pgd2", 0, 0, 4 },
00069     {  8, AC_Sb, "pgf3", 0, 0, 4 },
00070     {  8, AC_Sb, "pgd3", 0, 0, 4 },
00071     {  8, AC_Sb, "pgf4", 0, 0, 4 },
00072     {  8, AC_Sb, "pgd4", 0, 0, 4 },
00073 
00074     {  8, AC_ib, "pfb",  0, 0, 0 },
00075     {  8, AC_ib, "pfs",  0, 0, 0 },
00076     {  8, AC_ib, "pfi",  0, 0, 0 },
00077     {  8, AC_ib, "pfl",  0, 0, 0 },
00078     {  8, AC_ib, "pfpr", 0, 0, 0 },
00079     {  8, AC_ib, "pfpw", 0, 0, 0 },
00080     {  8, AC_ib, "pfar", 0, 0, 0 },
00081     {  8, AC_ib, "pfaw", 0, 0, 0 },
00082     {  8, AC_ib, "pff",  0, 0, 0 },
00083     {  8, AC_ib, "pfd",  0, 0, 0 },
00084     {  8, AC_ib, "pff2", 0, 0, 0 },
00085     {  8, AC_ib, "pfd2", 0, 0, 0 },
00086     {  8, AC_ib, "pff3", 0, 0, 0 },
00087     {  8, AC_ib, "pfd3", 0, 0, 0 },
00088     {  8, AC_ib, "pff4", 0, 0, 0 },
00089     {  8, AC_ib, "pfd4", 0, 0, 0 },
00090 
00091     {  2, AC_void, "pab",  0, 0, 0 },
00092     {  2, AC_void, "pas",  0, 0, 0 },
00093     {  2, AC_void, "pai",  0, 0, 0 },
00094     {  2, AC_void, "pal",  0, 0, 0 },
00095     {  2, AC_void, "papr", 0, 0, 0 },
00096     {  2, AC_void, "papw", 0, 0, 0 },
00097     {  2, AC_void, "paar", 0, 0, 0 },
00098     {  2, AC_void, "paaw", 0, 0, 0 },
00099     {  2, AC_void, "paf",  0, 0, 0 },
00100     {  2, AC_void, "pad",  0, 0, 0 },
00101 
00102     {  6, AC_i, "pi", 0, 0, 0 },
00103 
00104     {  6, AC_i, "popv", 0, 0, 0 },
00105     {  6, AC_i, "popp", 0, 0, 0 },
00106 
00107     {  8, AC_ib, "ssb",  0, 0, 0 },
00108     {  8, AC_ib, "sss",  0, 0, 0 },
00109     {  8, AC_ib, "ssi",  0, 0, 0 },
00110     {  8, AC_ib, "ssl",  0, 0, 0 },
00111     {  8, AC_ib, "ssp",  0, 0, 0 },
00112     {  8, AC_ib, "ssa",  0, 0, 0 },
00113     {  8, AC_ib, "ssf",  0, 0, 0 },
00114     {  8, AC_ib, "ssd",  0, 0, 0 },
00115     {  8, AC_ib, "ssf2", 0, 0, 0 },
00116     {  8, AC_ib, "ssd2", 0, 0, 0 },
00117     {  8, AC_ib, "ssf3", 0, 0, 0 },
00118     {  8, AC_ib, "ssd3", 0, 0, 0 },
00119     {  8, AC_ib, "ssf4", 0, 0, 0 },
00120     {  8, AC_ib, "ssd4", 0, 0, 0 },
00121 
00122     {  8, AC_Sb, "sgb",  0, 0, 4 },
00123     {  8, AC_Sb, "sgs",  0, 0, 4 },
00124     {  8, AC_Sb, "sgi",  0, 0, 4 },
00125     {  8, AC_Sb, "sgl",  0, 0, 4 },
00126     {  8, AC_Sb, "sgp",  0, 0, 4 },
00127     {  8, AC_Sb, "sga",  0, 0, 4 },
00128     {  8, AC_Sb, "sgf",  0, 0, 4 },
00129     {  8, AC_Sb, "sgd",  0, 0, 4 },
00130     {  8, AC_Sb, "sgf2", 0, 0, 4 },
00131     {  8, AC_Sb, "sgd2", 0, 0, 4 },
00132     {  8, AC_Sb, "sgf3", 0, 0, 4 },
00133     {  8, AC_Sb, "sgd3", 0, 0, 4 },
00134     {  8, AC_Sb, "sgf4", 0, 0, 4 },
00135     {  8, AC_Sb, "sgd4", 0, 0, 4 },
00136 
00137     {  8, AC_ib, "sfb",  0, 0, 0 },
00138     {  8, AC_ib, "sfs",  0, 0, 0 },
00139     {  8, AC_ib, "sfi",  0, 0, 0 },
00140     {  8, AC_ib, "sfl",  0, 0, 0 },
00141     {  8, AC_ib, "sfp",  0, 0, 0 },
00142     {  8, AC_ib, "sfa",  0, 0, 0 },
00143     {  8, AC_ib, "sff",  0, 0, 0 },
00144     {  8, AC_ib, "sfd",  0, 0, 0 },
00145     {  8, AC_ib, "sff2", 0, 0, 0 },
00146     {  8, AC_ib, "sfd2", 0, 0, 0 },
00147     {  8, AC_ib, "sff3", 0, 0, 0 },
00148     {  8, AC_ib, "sfd3", 0, 0, 0 },
00149     {  8, AC_ib, "sff4", 0, 0, 0 },
00150     {  8, AC_ib, "sfd4", 0, 0, 0 },
00151 
00152     {  2, AC_void, "sab", 0, 0, 0 },
00153     {  2, AC_void, "sas", 0, 0, 0 },
00154     {  2, AC_void, "sai", 0, 0, 0 },
00155     {  2, AC_void, "sal", 0, 0, 0 },
00156     {  2, AC_void, "sap", 0, 0, 0 },
00157     {  2, AC_void, "saa", 0, 0, 0 },
00158     {  2, AC_void, "saf", 0, 0, 0 },
00159     {  2, AC_void, "sad", 0, 0, 0 },
00160 
00161     {  2, AC_void, "addb",  0, 0, 0 },
00162     {  2, AC_void, "adds",  0, 0, 0 },
00163     {  2, AC_void, "addi",  0, 0, 0 },
00164     {  2, AC_void, "addl",  0, 0, 0 },
00165     {  2, AC_void, "addf",  0, 0, 0 },
00166     {  2, AC_void, "addd",  0, 0, 0 },
00167     {  2, AC_void, "addf2", 0, 0, 0 },
00168     {  2, AC_void, "addd2", 0, 0, 0 },
00169     {  2, AC_void, "addf3", 0, 0, 0 },
00170     {  2, AC_void, "addd3", 0, 0, 0 },
00171     {  2, AC_void, "addf4", 0, 0, 0 },
00172     {  2, AC_void, "addd4", 0, 0, 0 },
00173 
00174     {  2, AC_void, "subb",  0, 0, 0 },
00175     {  2, AC_void, "subs",  0, 0, 0 },
00176     {  2, AC_void, "subi",  0, 0, 0 },
00177     {  2, AC_void, "subl",  0, 0, 0 },
00178     {  2, AC_void, "subf",  0, 0, 0 },
00179     {  2, AC_void, "subd",  0, 0, 0 },
00180     {  2, AC_void, "subf2", 0, 0, 0 },
00181     {  2, AC_void, "subd2", 0, 0, 0 },
00182     {  2, AC_void, "subf3", 0, 0, 0 },
00183     {  2, AC_void, "subd3", 0, 0, 0 },
00184     {  2, AC_void, "subf4", 0, 0, 0 },
00185     {  2, AC_void, "subd4", 0, 0, 0 },
00186 
00187     {  2, AC_void, "mulb", 0, 0, 0 },
00188     {  2, AC_void, "muls", 0, 0, 0 },
00189     {  2, AC_void, "muli", 0, 0, 0 },
00190     {  2, AC_void, "mull", 0, 0, 0 },
00191     {  2, AC_void, "mulf", 0, 0, 0 },
00192     {  2, AC_void, "muld", 0, 0, 0 },
00193 
00194     {  2, AC_void, "divb", 0, 0, 0 },
00195     {  2, AC_void, "divs", 0, 0, 0 },
00196     {  2, AC_void, "divi", 0, 0, 0 },
00197     {  2, AC_void, "divl", 0, 0, 0 },
00198     {  2, AC_void, "divf", 0, 0, 0 },
00199     {  2, AC_void, "divd", 0, 0, 0 },
00200 
00201     {  2, AC_void, "modb", 0, 0, 0 },
00202     {  2, AC_void, "mods", 0, 0, 0 },
00203     {  2, AC_void, "modi", 0, 0, 0 },
00204     {  2, AC_void, "modl", 0, 0, 0 },
00205     {  2, AC_void, "modf", 0, 0, 0 },
00206     {  2, AC_void, "modd", 0, 0, 0 },
00207 
00208     {  2, AC_void, "negb",  0, 0, 0 },
00209     {  2, AC_void, "negs",  0, 0, 0 },
00210     {  2, AC_void, "negi",  0, 0, 0 },
00211     {  2, AC_void, "negl",  0, 0, 0 },
00212     {  2, AC_void, "negf",  0, 0, 0 },
00213     {  2, AC_void, "negd",  0, 0, 0 },
00214     {  2, AC_void, "negf2", 0, 0, 0 },
00215     {  2, AC_void, "negd2", 0, 0, 0 },
00216     {  2, AC_void, "negf3", 0, 0, 0 },
00217     {  2, AC_void, "negd3", 0, 0, 0 },
00218     {  2, AC_void, "negf4", 0, 0, 0 },
00219     {  2, AC_void, "negd4", 0, 0, 0 },
00220 
00221     {  2, AC_void, "eqb",  0, 0, 0 },
00222     {  2, AC_void, "eqs",  0, 0, 0 },
00223     {  2, AC_void, "eqi",  0, 0, 0 },
00224     {  2, AC_void, "eql",  0, 0, 0 },
00225     {  2, AC_void, "eqp",  0, 0, 0 },
00226     {  2, AC_void, "eqa",  0, 0, 0 },
00227     {  2, AC_void, "eqf",  0, 0, 0 },
00228     {  2, AC_void, "eqd",  0, 0, 0 },
00229     {  2, AC_void, "eqf2", 0, 0, 0 },
00230     {  2, AC_void, "eqd2", 0, 0, 0 },
00231     {  2, AC_void, "eqf3", 0, 0, 0 },
00232     {  2, AC_void, "eqd3", 0, 0, 0 },
00233     {  2, AC_void, "eqf4", 0, 0, 0 },
00234     {  2, AC_void, "eqd4", 0, 0, 0 },
00235 
00236     {  2, AC_void, "andb", 0, 0, 0 },
00237     {  2, AC_void, "ands", 0, 0, 0 },
00238     {  2, AC_void, "andi", 0, 0, 0 },
00239     {  2, AC_void, "andl", 0, 0, 0 },
00240 
00241     {  2, AC_void, "orb", 0, 0, 0 },
00242     {  2, AC_void, "ors", 0, 0, 0 },
00243     {  2, AC_void, "ori", 0, 0, 0 },
00244     {  2, AC_void, "orl", 0, 0, 0 },
00245 
00246     {  2, AC_void, "xorb", 0, 0, 0 },
00247     {  2, AC_void, "xors", 0, 0, 0 },
00248     {  2, AC_void, "xori", 0, 0, 0 },
00249     {  2, AC_void, "xorl", 0, 0, 0 },
00250 
00251     {  2, AC_void, "shlb", 0, 0, 0 },
00252     {  2, AC_void, "shls", 0, 0, 0 },
00253     {  2, AC_void, "shli", 0, 0, 0 },
00254     {  2, AC_void, "shll", 0, 0, 0 },
00255 
00256     {  2, AC_void, "shrb", 0, 0, 0 },
00257     {  2, AC_void, "shrs", 0, 0, 0 },
00258     {  2, AC_void, "shri", 0, 0, 0 },
00259     {  2, AC_void, "shrl", 0, 0, 0 },
00260 
00261     {  6, AC_i, "incsb", 0, 0, 0 },
00262     {  6, AC_i, "incss", 0, 0, 0 },
00263     {  6, AC_i, "incsi", 0, 0, 0 },
00264     {  6, AC_i, "incsl", 0, 0, 0 },
00265     {  6, AC_i, "incsf", 0, 0, 0 },
00266     {  6, AC_i, "incsd", 0, 0, 0 },
00267 
00268     {  6, AC_i, "decsb", 0, 0, 0 },
00269     {  6, AC_i, "decss", 0, 0, 0 },
00270     {  6, AC_i, "decsi", 0, 0, 0 },
00271     {  6, AC_i, "decsl", 0, 0, 0 },
00272     {  6, AC_i, "decsf", 0, 0, 0 },
00273     {  6, AC_i, "decsd", 0, 0, 0 },
00274 
00275     {  2, AC_void, "cvbb", 0, 0, 0 },
00276     {  2, AC_void, "cvbs", 0, 0, 0 },
00277     {  2, AC_void, "cvbi", 0, 0, 0 },
00278     {  2, AC_void, "cvbl", 0, 0, 0 },
00279     {  2, AC_void, "cvbf", 0, 0, 0 },
00280     {  2, AC_void, "cvbd", 0, 0, 0 },
00281     {  2, AC_void, "cvsb", 0, 0, 0 },
00282     {  2, AC_void, "cvss", 0, 0, 0 },
00283     {  2, AC_void, "cvsi", 0, 0, 0 },
00284     {  2, AC_void, "cvsl", 0, 0, 0 },
00285     {  2, AC_void, "cvsf", 0, 0, 0 },
00286     {  2, AC_void, "cvsd", 0, 0, 0 },
00287     {  2, AC_void, "cvib", 0, 0, 0 },
00288     {  2, AC_void, "cvis", 0, 0, 0 },
00289     {  2, AC_void, "cvii", 0, 0, 0 },
00290     {  2, AC_void, "cvil", 0, 0, 0 },
00291     {  2, AC_void, "cvif", 0, 0, 0 },
00292     {  2, AC_void, "cvid", 0, 0, 0 },
00293     {  2, AC_void, "cvlb", 0, 0, 0 },
00294     {  2, AC_void, "cvls", 0, 0, 0 },
00295     {  2, AC_void, "cvli", 0, 0, 0 },
00296     {  2, AC_void, "cvll", 0, 0, 0 },
00297     {  2, AC_void, "cvlf", 0, 0, 0 },
00298     {  2, AC_void, "cvld", 0, 0, 0 },
00299     {  2, AC_void, "cvfb", 0, 0, 0 },
00300     {  2, AC_void, "cvfs", 0, 0, 0 },
00301     {  2, AC_void, "cvfi", 0, 0, 0 },
00302     {  2, AC_void, "cvfl", 0, 0, 0 },
00303     {  2, AC_void, "cvff", 0, 0, 0 },
00304     {  2, AC_void, "cvfd", 0, 0, 0 },
00305     {  2, AC_void, "cvdb", 0, 0, 0 },
00306     {  2, AC_void, "cvds", 0, 0, 0 },
00307     {  2, AC_void, "cvdi", 0, 0, 0 },
00308     {  2, AC_void, "cvdl", 0, 0, 0 },
00309     {  2, AC_void, "cvdf", 0, 0, 0 },
00310     {  2, AC_void, "cvdd", 0, 0, 0 },
00311 
00312     {  6, AC_i, "jmp", 2, 0, 0 },
00313 
00314     {  6, AC_i, "jnb", 2, 0, 0 },
00315     {  6, AC_i, "jns", 2, 0, 0 },
00316     {  6, AC_i, "jni", 2, 0, 0 },
00317     {  6, AC_i, "jnl", 2, 0, 0 },
00318     {  6, AC_i, "jnp", 2, 0, 0 },
00319     {  6, AC_i, "jna", 2, 0, 0 },
00320     {  6, AC_i, "jnf", 2, 0, 0 },
00321     {  6, AC_i, "jnd", 2, 0, 0 },
00322 
00323     {  6, AC_i, "jzb", 2, 0, 0 },
00324     {  6, AC_i, "jzs", 2, 0, 0 },
00325     {  6, AC_i, "jzi", 2, 0, 0 },
00326     {  6, AC_i, "jzl", 2, 0, 0 },
00327     {  6, AC_i, "jzp", 2, 0, 0 },
00328     {  6, AC_i, "jza", 2, 0, 0 },
00329     {  6, AC_i, "jzf", 2, 0, 0 },
00330     {  6, AC_i, "jzd", 2, 0, 0 },
00331 
00332     {  4, AC_bb,   "anew",  0, 0, 0 },
00333     {  2, AC_void, "asize", 0, 0, 0 },
00334     {  2, AC_void, "acpy",  0, 0, 0 },
00335     {  2, AC_void, "adel",  0, 0, 0 },
00336 
00337     {  6, AC_S,    "onew", 0, 2, 0 },
00338     {  2, AC_void, "ocpy", 0, 0, 0 },
00339     {  2, AC_void, "odel", 0, 0, 0 },
00340 
00341     {  6, AC_S, "scast", 0, 2, 0 },
00342     {  6, AC_S, "dcast", 0, 2, 0 },
00343 
00344     {  6, AC_S, "call",   0, 0, 2 },
00345     {  6, AC_S, "mcall",  0, 0, 2 },
00346     {  6, AC_i, "vmcall", 0, 0, 0 },
00347 
00348     {  2, AC_void, "ret",   0, 0, 0 },
00349     {  2, AC_void, "retb",  0, 0, 0 },
00350     {  2, AC_void, "rets",  0, 0, 0 },
00351     {  2, AC_void, "reti",  0, 0, 0 },
00352     {  2, AC_void, "retl",  0, 0, 0 },
00353     {  2, AC_void, "retp",  0, 0, 0 },
00354     {  2, AC_void, "reta",  0, 0, 0 },
00355     {  2, AC_void, "retf",  0, 0, 0 },
00356     {  2, AC_void, "retd",  0, 0, 0 },
00357     {  2, AC_void, "retf2", 0, 0, 0 },
00358     {  2, AC_void, "retd2", 0, 0, 0 },
00359     {  2, AC_void, "retf3", 0, 0, 0 },
00360     {  2, AC_void, "retd3", 0, 0, 0 },
00361     {  2, AC_void, "retf4", 0, 0, 0 },
00362     {  2, AC_void, "retd4", 0, 0, 0 },
00363 };
00364 
00365 }  // end of namespace INST
00366 }  // end of namespace VM

Generated on Sat Feb 19 22:33:47 2005 for Ray by doxygen 1.3.5