tm_data_type.mdg.cc

Go to the documentation of this file.
00001 /* This file is generated from machine description */
00002 #include <lestes/std/map.hh>
00003 #include <lestes/md/types/tm_data_type.g.hh>
00004 #include <lestes/md/registers/tm_register.g.hh>
00005 
00006 /*! \file
00007         \brief Target-machine data-types.
00008         \author jaz
00009 */
00010 
00011 package(lestes);
00012 package(md);
00013 package(types);
00014 
00015 using ::lestes::md::registers::tm_register;
00016 
00017 ptr<tm_dt_simple> tm_dt_simple::instance(dt_id_type id) {
00018         map<dt_id_type, srp<tm_dt_simple> >::iterator existing_type = id_to_instance_get()->find(id);
00019 
00020         if ( existing_type != id_to_instance_get()->end() ) {
00021                 return existing_type->second;
00022         }
00023 
00024         ptr<tm_dt_simple> new_type = NULL;
00025         switch(id) {
00026                 case DT_COND: {
00027                         new_type = tm_dt_simple::create(DT_COND, FORMAT_C2, 8, 8, NULL, lstring("BYTE"), lstring("db"));
00028                 } break;
00029                 case DT_BOOL: {
00030                         new_type = tm_dt_simple::create(DT_BOOL, FORMAT_C2, 8, 8, tm_register::instance(::lestes::md::registers::R_AL), lstring("BYTE"), lstring("db"));
00031                 } break;
00032                 case DT_INT_8P: {
00033                         new_type = tm_dt_simple::create(DT_INT_8P, FORMAT_C2, 8, 8, tm_register::instance(::lestes::md::registers::R_AL), lstring("BYTE"), lstring("db"));
00034                 } break;
00035                 case DT_INT_8U: {
00036                         new_type = tm_dt_simple::create(DT_INT_8U, FORMAT_C2, 8, 8, tm_register::instance(::lestes::md::registers::R_AL), lstring("BYTE"), lstring("db"));
00037                 } break;
00038                 case DT_INT_8S: {
00039                         new_type = tm_dt_simple::create(DT_INT_8S, FORMAT_C2, 8, 8, tm_register::instance(::lestes::md::registers::R_AL), lstring("BYTE"), lstring("db"));
00040                 } break;
00041                 case DT_INT_16S: {
00042                         new_type = tm_dt_simple::create(DT_INT_16S, FORMAT_C2, 16, 16, tm_register::instance(::lestes::md::registers::R_AX), lstring("WORD"), lstring("dw"));
00043                 } break;
00044                 case DT_INT_16U: {
00045                         new_type = tm_dt_simple::create(DT_INT_16U, FORMAT_C2, 16, 16, tm_register::instance(::lestes::md::registers::R_AX), lstring("WORD"), lstring("dw"));
00046                 } break;
00047                 case DT_INT_32S: {
00048                         new_type = tm_dt_simple::create(DT_INT_32S, FORMAT_C2, 32, 32, tm_register::instance(::lestes::md::registers::R_EAX), lstring("DWORD"), lstring("dd"));
00049                 } break;
00050                 case DT_INT_32U: {
00051                         new_type = tm_dt_simple::create(DT_INT_32U, FORMAT_C2, 32, 32, tm_register::instance(::lestes::md::registers::R_EAX), lstring("DWORD"), lstring("dd"));
00052                 } break;
00053                 default: lassert(false);
00054 
00055         }
00056 
00057         lassert(new_type);
00058         id_to_instance_get()->insert(::std::pair<dt_id_type, srp<tm_dt_simple> >(id,new_type));
00059         return new_type;
00060 }
00061 
00062 end_package(types);
00063 end_package(md);
00064 end_package(lestes);

Generated on Mon Feb 12 18:23:37 2007 for lestes by doxygen 1.5.1-20070107