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.h

Go to the documentation of this file.
00001 /*
00002  * vm/instruction.h
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 #ifndef _VM_INSTRUCTION_H_
00018 #define _VM_INSTRUCTION_H_ 1
00019 
00027 #include <vm/vmconfig.h>    /* MUST be first */
00028 
00029 
00030 namespace VM
00031 {
00032 
00034 namespace INST
00035 {
00036 
00042 enum ArgComb
00043 {
00044     AC_void=0,  
00045     AC_i,       
00046     AC_S,       
00047     AC_bb,      
00048     AC_sb,      
00049     AC_ib,      
00050     AC_Sb,      
00051     AC_lb,      
00052     AC_fb,      
00053     AC_ffb,     
00054     AC_fffb,    
00055     AC_ffffb,   
00056     AC_db,      
00057     AC_ddb,     
00058     AC_dddb,    
00059     AC_ddddb,   
00060 };
00061 
00062 
00072 enum IID
00073 {
00074     NOP=0,   
00075     HLT,     
00076 
00077     PLB,     
00078     PLS,     
00079     PLI,     
00080     PLL,     
00081     PLF,     
00082     PLD,     
00083     PLF2,    
00084     PLD2,    
00085     PLF3,    
00086     PLD3,    
00087     PLF4,    
00088     PLD4,    
00089 
00090     PLN,     
00091 
00092     PSB,     
00093     PSS,     
00094     PSI,     
00095     PSL,     
00096     PSP,     
00097     PSA,     
00098     PSF,     
00099     PSD,     
00100     PSF2,    
00101     PSD2,    
00102     PSF3,    
00103     PSD3,    
00104     PSF4,    
00105     PSD4,    
00106 
00107     PGB,     
00108     PGS,     
00109     PGI,     
00110     PGL,     
00111     PGP,     
00112     PGA,     
00113     PGF,     
00114     PGD,     
00115     PGF2,    
00116     PGD2,    
00117     PGF3,    
00118     PGD3,    
00119     PGF4,    
00120     PGD4,    
00121 
00122     PFB,     
00123     PFS,     
00124     PFI,     
00125     PFL,     
00126     PFPR,    
00127     PFPW,    
00128     PFAR,    
00129     PFAW,    
00130     PFF,     
00131     PFD,     
00132     PFF2,    
00133     PFD2,    
00134     PFF3,    
00135     PFD3,    
00136     PFF4,    
00137     PFD4,    
00138 
00139     PAB,     
00140     PAS,     
00141     PAI,     
00142     PAL,     
00143     PAPR,    
00144     PAPW,    
00145     PAAR,    
00146     PAAW,    
00147     PAF,     
00148     PAD,     
00149 
00150     PI,      
00151 
00152     POPV,    
00153     POPP,    
00154 
00155     SSB,     
00156     SSS,     
00157     SSI,     
00158     SSL,     
00159     SSP,     
00160     SSA,     
00161     SSF,     
00162     SSD,     
00163     SSF2,    
00164     SSD2,    
00165     SSF3,    
00166     SSD3,    
00167     SSF4,    
00168     SSD4,    
00169 
00170     SGB,     
00171     SGS,     
00172     SGI,     
00173     SGL,     
00174     SGP,     
00175     SGA,     
00176     SGF,     
00177     SGD,     
00178     SGF2,    
00179     SGD2,    
00180     SGF3,    
00181     SGD3,    
00182     SGF4,    
00183     SGD4,    
00184 
00185     SFB,     
00186     SFS,     
00187     SFI,     
00188     SFL,     
00189     SFP,     
00190     SFA,     
00191     SFF,     
00192     SFD,     
00193     SFF2,    
00194     SFD2,    
00195     SFF3,    
00196     SFD3,    
00197     SFF4,    
00198     SFD4,    
00199 
00200     SAB,     
00201     SAS,     
00202     SAI,     
00203     SAL,     
00204     SAP,     
00205     SAA,     
00206     SAF,     
00207     SAD,     
00208 
00209     ADDB,    
00210     ADDS,    
00211     ADDI,    
00212     ADDL,    
00213     ADDF,    
00214     ADDD,    
00215     ADDF2,   
00216     ADDD2,   
00217     ADDF3,   
00218     ADDD3,   
00219     ADDF4,   
00220     ADDD4,   
00221 
00222     SUBB,    
00223     SUBS,    
00224     SUBI,    
00225     SUBL,    
00226     SUBF,    
00227     SUBD,    
00228     SUBF2,   
00229     SUBD2,   
00230     SUBF3,   
00231     SUBD3,   
00232     SUBF4,   
00233     SUBD4,   
00234 
00235     MULB,    
00236     MULS,    
00237     MULI,    
00238     MULL,    
00239     MULF,    
00240     MULD,    
00241 
00242     DIVB,    
00243     DIVS,    
00244     DIVI,    
00245     DIVL,    
00246     DIVF,    
00247     DIVD,    
00248 
00249     MODB,    
00250     MODS,    
00251     MODI,    
00252     MODL,    
00253     MODF,    
00254     MODD,    
00255 
00256     NEGB,    
00257     NEGS,    
00258     NEGI,    
00259     NEGL,    
00260     NEGF,    
00261     NEGD,    
00262     NEGF2,   
00263     NEGD2,   
00264     NEGF3,   
00265     NEGD3,   
00266     NEGF4,   
00267     NEGD4,   
00268 
00269     EQB,     
00270     EQS,     
00271     EQI,     
00272     EQL,     
00273     EQP,     
00274     EQA,     
00275     EQF,     
00276     EQD,     
00277     EQF2,    
00278     EQD2,    
00279     EQF3,    
00280     EQD3,    
00281     EQF4,    
00282     EQD4,    
00283 
00284     ANDB,    
00285     ANDS,    
00286     ANDI,    
00287     ANDL,    
00288 
00289     ORB,     
00290     ORS,     
00291     ORI,     
00292     ORL,     
00293 
00294     XORB,    
00295     XORS,    
00296     XORI,    
00297     XORL,    
00298 
00299     SHLB,    
00300     SHLS,    
00301     SHLI,    
00302     SHLL,    
00303 
00304     SHRB,    
00305     SHRS,    
00306     SHRI,    
00307     SHRL,    
00308 
00309     INCSB,   
00310     INCSS,   
00311     INCSI,   
00312     INCSL,   
00313     INCSF,   
00314     INCSD,   
00315 
00316     DECSB,   
00317     DECSS,   
00318     DECSI,   
00319     DECSL,   
00320     DECSF,   
00321     DECSD,   
00322 
00323     CVBB,    
00324     CVBS,    
00325     CVBI,    
00326     CVBL,    
00327     CVBF,    
00328     CVBD,    
00329     CVSB,    
00330     CVSS,    
00331     CVSI,    
00332     CVSL,    
00333     CVSF,    
00334     CVSD,    
00335     CVIB,    
00336     CVIS,    
00337     CVII,    
00338     CVIL,    
00339     CVIF,    
00340     CVID,    
00341     CVLB,    
00342     CVLS,    
00343     CVLI,    
00344     CVLL,    
00345     CVLF,    
00346     CVLD,    
00347     CVFB,    
00348     CVFS,    
00349     CVFI,    
00350     CVFL,    
00351     CVFF,    
00352     CVFD,    
00353     CVDB,    
00354     CVDS,    
00355     CVDI,    
00356     CVDL,    
00357     CVDF,    
00358     CVDD,    
00359 
00360     JMP,     
00361 
00362     JNB,     
00363     JNS,     
00364     JNI,     
00365     JNL,     
00366     JNP,     
00367     JNA,     
00368     JNF,     
00369     JND,     
00370 
00371     JZB,     
00372     JZS,     
00373     JZI,     
00374     JZL,     
00375     JZP,     
00376     JZA,     
00377     JZF,     
00378     JZD,     
00379 
00380     ANEW,    
00381     ASIZE,   
00382     ACPY,    
00383     ADEL,    
00384 
00385     ONEW,    
00386     OCPY,    
00387     ODEL,    
00388 
00389     SCAST,   
00390     DCAST,   
00391 
00392     CALL,    
00393     MCALL,   
00394     VMCALL,  
00395 
00396     RET,     
00397     RETB,    
00398     RETS,    
00399     RETI,    
00400     RETL,    
00401     RETP,    
00402     RETA,    
00403     RETF,    
00404     RETD,    
00405     RETF2,   
00406     RETD2,   
00407     RETF3,   
00408     RETD3,   
00409     RETF4,   
00410     RETD4,   
00411 
00412     IID_LAST    
00413 };
00414 
00418 struct DescEntry
00419 {
00420     uint16 size;          
00421     ArgComb argcomb : 16; 
00422     const char *name;     
00423     uint8 codemark_off;   
00424 
00425     uint8 typeid_off;     
00426     uint8 symref_off;     
00427 };
00428 
00430 extern const DescEntry _inst_desc[IID_LAST];
00431 
00433 inline const DescEntry *Desc(IID i)
00434     {  return((i<0 || i>=IID_LAST) ? NULL : &_inst_desc[i]);  }
00435 
00436 }  // end of namespace INST
00437 
00438 }  // end of namespace VM
00439 
00440 #endif  /* _VM_INSTRUCTION_H_ */

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