Main Page Modules Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages
arch_info Class Reference#include <arch_info.h>
List of all members.
|
Public Types |
typedef vector< register_info * > | register_info_list |
typedef register_info_list::iterator | register_info_list_p |
typedef map< string, register_info * > | register_info_map |
Public Member Functions |
| arch_info () |
| ~arch_info () |
bool | load_arch_info (const char *pFile) |
void | reset_info () |
bool | is_valid () |
const char * | get_asm_line_comment () const |
const char * | get_asm_const_prefix () const |
const register_info_list & | get_all_regs () const |
const register_info_list & | get_regs_gpr () const |
const register_info_list & | get_regs_fpr () const |
const register_info * | get_reg_sp () const |
const register_info * | get_reg_fp () const |
const register_info_list & | get_regs_param_fixed () const |
const register_info_list & | get_regs_param_float () const |
const register_info * | get_reg_retval_fixed () const |
const register_info * | get_reg_retval_float () const |
const register_info_list & | get_regs_caller_save () const |
const register_info_list & | get_regs_callee_save () const |
typeNode * | get_reg_data_type_gpr () const |
typeNode * | get_reg_data_type_fpr () const |
Register | get_register (const register_info *pInfo) |
bool | get_reg_name (const Register ®, string &name, bool wantPrefixAdd=true, bool wantPrefixRemove=false) |
bool | get_reg_by_index (int realRegIndex, Register ®) |
unsigned int | get_data_size_short () const |
unsigned int | get_data_size_int () const |
unsigned int | get_data_size_long () const |
unsigned int | get_data_size_float () const |
unsigned int | get_data_size_double () const |
unsigned int | get_data_size_ptr () const |
unsigned int | get_data_size (typeNode *) const |
unsigned int | get_max_data_align () const |
unsigned int | get_data_align_char () const |
unsigned int | get_data_align_short () const |
unsigned int | get_data_align_int () const |
unsigned int | get_data_align_long () const |
unsigned int | get_data_align_float () const |
unsigned int | get_data_align_double () const |
unsigned int | get_data_align_ptr () const |
unsigned int | get_data_align (typeNode *) const |
unsigned int | get_stack_frame_min_size () const |
int | get_stack_extra_top () const |
int | get_stack_extra_bottom () const |
unsigned int | get_stack_align () const |
int | get_stack_formals_offset () const |
bool | emulate_3_address () const |
bool | get_code_for_instruction (const LirInst *pInst, vector< string > &lines) |
bool | get_instruction_kill_regs (const LirInst *pInst, register_info_list &killRegs) |
bool | types_need_conversion (typeNode *srcType, typeNode *destType) |
bool | instruction_supports_immediate (mnemonic instruction, typeNode *the_type, const constant &c) |
Static Public Attributes |
register_info | pseudo_reg_dest |
register_info | pseudo_reg_src1 |
register_info | pseudo_reg_src2 |
Private Types |
typedef vector< string > | code_template |
typedef vector< Lir2Asm > | Lir2Asm_list |
typedef map< mnemonic, vector<
int > > | map_menmonic_to_record_set |
Private Member Functions |
bool | find_register_info (const char *name, register_info *®InfoFound) const |
bool | get_Lir2Asm_for_instruction (const LirInst *pInst, Lir2Asm **ppLir2Asm) |
bool | get_Lir2Asm_for_instruction (mnemonic inst, typeNode *srcType, typeNode *destType, bool isImmed, Lir2Asm **ppLir2Asm) |
bool | findType (vector< typeNode * > &, typeNode *) |
void | make_template_replacements (const LirInst *pInst, Lir2Asm *pLir2Asm, code_template &outputTemplate) |
Static Private Member Functions |
void | do_init_static () |
Private Attributes |
bool | _valid |
unsigned int | _nextRegId |
string | _archName |
string | _asmLineComment |
string | _asmRegPrefixAdd |
string | _asmRegPrefixRemove |
vector< string > | _asmRegPrefixRemoveSplit |
string | _asmConstPrefix |
register_info_list | _regsAll |
register_info_map | _regMap |
register_info_list | _regsGpr |
register_info_list | _regsFpr |
register_info * | _regSp |
register_info * | _regFp |
register_info_list | _regsParamFixed |
register_info_list | _regsParamFloat |
register_info * | _regRetvalFixed |
register_info * | _regRetvalFloat |
register_info_list | _regsCallerSave |
register_info_list | _regsCalleeSave |
typeNode * | _regDataTypeGpr |
typeNode * | _regDataTypeFpr |
int | _dataSizeLong |
int | _dataSizeInt |
int | _dataSizeShort |
int | _dataSizeDouble |
int | _dataSizeFloat |
int | _dataSizePtr |
int | _maxDataAlign |
int | _dataAlignChar |
int | _dataAlignShort |
int | _dataAlignInt |
int | _dataAlignLong |
int | _dataAlignFloat |
int | _dataAlignDouble |
int | _dataAlignPtr |
int | _stackFrameMinSize |
int | _stackExtraTop |
int | _stackExtraBottom |
int | _stackAlign |
int | _stackFormalsOffset |
bool | _emulate3Address |
Lir2Asm_list | _Lir2Asm_records |
map_menmonic_to_record_set | _Lir2Asm_mnemonicLookup |
string | _tempParseString |
register_info_list | _tempRegList |
bool | _tempBool |
Friends |
class | arch_info_parser |
Member Typedef Documentation
typedef vector<string> arch_info::code_template [private]
|
|
typedef map<mnemonic, vector<int> > arch_info::map_menmonic_to_record_set [private]
|
|
typedef register_info_list::iterator arch_info::register_info_list_p
|
|
Constructor & Destructor Documentation
arch_info::~arch_info |
( |
|
) |
|
|
Member Function Documentation
void arch_info::do_init_static |
( |
|
) |
[static, private] |
|
bool arch_info::emulate_3_address |
( |
|
) |
const [inline] |
|
bool arch_info::find_register_info |
( |
const char * |
name, |
|
|
register_info *& |
regInfoFound |
|
) |
const [private] |
|
const char * arch_info::get_asm_const_prefix |
( |
|
) |
const |
|
const char * arch_info::get_asm_line_comment |
( |
|
) |
const |
|
bool arch_info::get_code_for_instruction |
( |
const LirInst * |
pInst, |
|
|
vector< string > & |
lines |
|
) |
|
|
unsigned int arch_info::get_data_align |
( |
typeNode * |
|
) |
const |
|
|
Definition at line 276 of file arch_info.cc.
References primNode::basic(), get_data_align_char(), get_data_align_double(), get_data_align_float(), get_data_align_int(), get_data_align_long(), get_data_align_ptr(), get_data_align_short(), get_max_data_align(), typeNode::is_aggregate(), primNode::is_char(), primNode::is_float(), primNode::is_integer(), basic_type::is_long(), typeNode::is_pointer(), and basic_type::is_short(). |
unsigned int arch_info::get_data_align_char |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_align_double |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_align_float |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_align_int |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_align_long |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_align_ptr |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_align_short |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_size |
( |
typeNode * |
|
) |
const |
|
|
Definition at line 226 of file arch_info.cc.
References primNode::basic(), get_data_size_double(), get_data_size_float(), get_data_size_int(), get_data_size_long(), get_data_size_ptr(), get_data_size_short(), primNode::is_char(), primNode::is_float(), primNode::is_integer(), basic_type::is_long(), typeNode::is_pointer(), and basic_type::is_short(). |
unsigned int arch_info::get_data_size_double |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_size_float |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_size_int |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_size_long |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_size_ptr |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_data_size_short |
( |
|
) |
const [inline] |
|
bool arch_info::get_Lir2Asm_for_instruction |
( |
const LirInst * |
pInst, |
|
|
Lir2Asm ** |
ppLir2Asm |
|
) |
[private] |
|
unsigned int arch_info::get_max_data_align |
( |
|
) |
const |
|
bool arch_info::get_reg_by_index |
( |
int |
realRegIndex, |
|
|
Register & |
reg |
|
) |
|
|
typeNode * arch_info::get_reg_data_type_fpr |
( |
|
) |
const |
|
typeNode * arch_info::get_reg_data_type_gpr |
( |
|
) |
const |
|
bool arch_info::get_reg_name |
( |
const Register & |
reg, |
|
|
string & |
name, |
|
|
bool |
wantPrefixAdd = true, |
|
|
bool |
wantPrefixRemove = false |
|
) |
|
|
unsigned int arch_info::get_stack_align |
( |
|
) |
const [inline] |
|
int arch_info::get_stack_extra_bottom |
( |
|
) |
const [inline] |
|
int arch_info::get_stack_extra_top |
( |
|
) |
const [inline] |
|
int arch_info::get_stack_formals_offset |
( |
|
) |
const [inline] |
|
unsigned int arch_info::get_stack_frame_min_size |
( |
|
) |
const [inline] |
|
bool arch_info::is_valid |
( |
|
) |
[inline] |
|
bool arch_info::load_arch_info |
( |
const char * |
pFile |
) |
|
|
|
Definition at line 542 of file arch_info.cc.
References _archName, _asmRegPrefixRemove, _asmRegPrefixRemoveSplit, _dataAlignChar, _dataAlignDouble, _dataAlignFloat, _dataAlignInt, _dataAlignLong, _dataAlignPtr, _dataAlignShort, _dataSizeDouble, _dataSizeFloat, _dataSizeInt, _dataSizeLong, _dataSizePtr, _dataSizeShort, arch_info::register_info::_name, _regDataTypeFpr, _regDataTypeGpr, _regFp, _regRetvalFixed, _regRetvalFloat, _regsAll, _regsCalleeSave, _regsCallerSave, _regsFpr, _regsGpr, _regSp, _stackAlign, _stackFrameMinSize, arch_info::register_info::_type, _valid, arch_info::register_info::is_valid(), arch_info_parser::parse(), reg_fpr, reg_frame_ptr, reg_gpr, reg_stack_ptr, register_info, and reset_info().
Referenced by process_flags(). |
|
Definition at line 484 of file arch_info.cc.
References _regsAll, LirInst::dataAlign, LirInst::dataSize, LirInst::dataValue, LirInst::dest, get_reg_name(), LirInst::has_base(), LirInst::has_dest(), LirInst::has_offset(), LirInst::has_opnd1(), LirInst::has_opnd2(), LirInst::memBase, LirInst::memOffset, LirInst::nodeExtra, LirInst::opnd1, LirInst::opnd2, Proc, procNode::stack_frame_size(), cbz_util::string_format(), cbz_util::string_replace(), LirInst::target, constant::to_string(), reg_or_const::to_string(), Register::to_string(), and Node::typ().
Referenced by get_code_for_instruction(). |
void arch_info::reset_info |
( |
|
) |
|
|
|
Definition at line 72 of file arch_info.cc.
References _asmConstPrefix, _asmLineComment, _asmRegPrefixAdd, _asmRegPrefixRemove, _asmRegPrefixRemoveSplit, _dataAlignChar, _dataAlignDouble, _dataAlignFloat, _dataAlignInt, _dataAlignLong, _dataAlignPtr, _dataAlignShort, _dataSizeDouble, _dataSizeFloat, _dataSizeInt, _dataSizeLong, _dataSizePtr, _dataSizeShort, _emulate3Address, _Lir2Asm_mnemonicLookup, _Lir2Asm_records, _maxDataAlign, _regDataTypeFpr, _regDataTypeGpr, _regFp, _regMap, _regRetvalFixed, _regRetvalFloat, _regsAll, _regsFpr, _regsGpr, _regSp, _regsParamFixed, _regsParamFloat, _stackAlign, _stackExtraBottom, _stackExtraTop, _stackFormalsOffset, _stackFrameMinSize, and _valid.
Referenced by arch_info(), and load_arch_info(). |
bool arch_info::types_need_conversion |
( |
typeNode * |
srcType, |
|
|
typeNode * |
destType |
|
) |
|
|
Friends And Related Function Documentation
friend class arch_info_parser [friend]
|
|
Member Data Documentation
string arch_info::_archName [private]
|
|
string arch_info::_asmConstPrefix [private]
|
|
string arch_info::_asmLineComment [private]
|
|
string arch_info::_asmRegPrefixAdd [private]
|
|
string arch_info::_asmRegPrefixRemove [private]
|
|
vector<string> arch_info::_asmRegPrefixRemoveSplit [private]
|
|
int arch_info::_dataAlignChar [private]
|
|
int arch_info::_dataAlignDouble [private]
|
|
int arch_info::_dataAlignFloat [private]
|
|
int arch_info::_dataAlignInt [private]
|
|
int arch_info::_dataAlignLong [private]
|
|
int arch_info::_dataAlignPtr [private]
|
|
int arch_info::_dataAlignShort [private]
|
|
int arch_info::_dataSizeDouble [private]
|
|
int arch_info::_dataSizeFloat [private]
|
|
int arch_info::_dataSizeInt [private]
|
|
int arch_info::_dataSizeLong [private]
|
|
int arch_info::_dataSizePtr [private]
|
|
int arch_info::_dataSizeShort [private]
|
|
bool arch_info::_emulate3Address [private]
|
|
int arch_info::_maxDataAlign [mutable, private]
|
|
unsigned int arch_info::_nextRegId [private]
|
|
typeNode* arch_info::_regDataTypeFpr [private]
|
|
typeNode* arch_info::_regDataTypeGpr [private]
|
|
int arch_info::_stackAlign [private]
|
|
int arch_info::_stackExtraBottom [private]
|
|
int arch_info::_stackExtraTop [private]
|
|
int arch_info::_stackFormalsOffset [private]
|
|
int arch_info::_stackFrameMinSize [private]
|
|
bool arch_info::_tempBool [private]
|
|
string arch_info::_tempParseString [private]
|
|
bool arch_info::_valid [private]
|
|
The documentation for this class was generated from the following files:
|