⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen.h

📁 这个是LINUX下的GDB调度工具的源码
💻 H
字号:
/* The IGEN simulator generator for GDB, the GNU Debugger.   Copyright 2002 Free Software Foundation, Inc.   Contributed by Andrew Cagney.   This file is part of GDB.   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place - Suite 330,   Boston, MA 02111-1307, USA.  */typedef struct _opcode_field opcode_field;struct _opcode_field{  int word_nr;  int first;  int last;  int is_boolean;  int nr_opcodes;  unsigned boolean_constant;  opcode_field *parent;};typedef struct _opcode_bits opcode_bits;struct _opcode_bits{  int value;  int first;  int last;  insn_field_entry *field;  opcode_field *opcode;  opcode_bits *next;};typedef struct _insn_opcodes insn_opcodes;struct _insn_opcodes{  opcode_field *opcode;  insn_opcodes *next;};typedef struct _insn_list insn_list;struct _insn_list{  /* the instruction */  insn_entry *insn;  /* list of non constant bits that have been made constant */  opcode_bits *expanded_bits;  /* list of the various opcode field paths used to reach this     instruction */  insn_opcodes *opcodes;  /* number of prefetched words for this instruction */  int nr_prefetched_words;  /* The semantic function list_entry corresponding to this insn */  insn_list *semantic;  /* linked list */  insn_list *next;};/* forward */typedef struct _gen_list gen_list;typedef struct _gen_entry gen_entry;struct _gen_entry{  /* as an entry in a table */  int word_nr;  int opcode_nr;  gen_entry *sibling;  opcode_bits *expanded_bits;  gen_entry *parent;		/* parent has the opcode* data */  /* as a table containing entries */  decode_table *opcode_rule;  opcode_field *opcode;  int nr_prefetched_words;  int nr_entries;  gen_entry *entries;  /* as both an entry and a table */  int nr_insns;  insn_list *insns;  /* if siblings are being combined */  gen_entry *combined_next;  gen_entry *combined_parent;  /* our top-of-tree */  gen_list *top;};struct _gen_list{  model_entry *model;  insn_table *isa;  gen_entry *table;  gen_list *next;};typedef struct _gen_table gen_table;struct _gen_table{  /* list of all the instructions */  insn_table *isa;  /* list of all the semantic functions */  decode_table *rules;  /* list of all the generated instruction tables */  gen_list *tables;  /* list of all the semantic functions */  int nr_semantics;  insn_list *semantics;};extern gen_table *make_gen_tables (insn_table *isa, decode_table *rules);extern void gen_tables_expand_insns (gen_table *gen);extern void gen_tables_expand_semantics (gen_table *gen);extern int gen_entry_depth (gen_entry *table);/* Traverse the created data structure */typedef void gen_entry_handler  (lf *file, gen_entry *entry, int depth, void *data);extern void gen_entry_traverse_tree  (lf *file,   gen_entry *table,   int depth,   gen_entry_handler * start,   gen_entry_handler * leaf, gen_entry_handler * end, void *data);/* Misc functions - actually in igen.c *//* Cache functions: */extern int print_icache_function_formal (lf *file, int nr_prefetched_words);extern int print_icache_function_actual (lf *file, int nr_prefetched_words);extern int print_icache_function_type (lf *file);extern int print_semantic_function_formal (lf *file, int nr_prefetched_words);extern int print_semantic_function_actual (lf *file, int nr_prefetched_words);extern int print_semantic_function_type (lf *file);extern int print_idecode_function_formal (lf *file, int nr_prefetched_words);extern int print_idecode_function_actual (lf *file, int nr_prefetched_words);typedef enum{  function_name_prefix_semantics,  function_name_prefix_idecode,  function_name_prefix_itable,  function_name_prefix_icache,  function_name_prefix_engine,  function_name_prefix_none}lf_function_name_prefixes;typedef enum{  is_function_declaration = 0,  is_function_definition = 1,  is_function_variable,}function_decl_type;extern int print_function_name  (lf *file,   const char *basename,   const char *format_name,   const char *model_name,   opcode_bits *expanded_bits, lf_function_name_prefixes prefix);extern void print_my_defines  (lf *file,   const char *basename, const char *format_name, opcode_bits *expanded_bits);extern void print_itrace (lf *file, insn_entry * insn, int idecode);extern void print_sim_engine_abort (lf *file, const char *message);extern void print_include (lf *file, igen_module module);extern void print_include_inline (lf *file, igen_module module);extern void print_includes (lf *file);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -