2011年(15)
分类: 嵌入式
2011-12-19 16:00:54
汇编器移植涉及到的接口:
需要移植修改的函数: 序号 | 名称 | 功能 |
1 | int md_parse_option(optc,optarg) | 机器相关对命令行选项处理(default处理) |
2 | void md_show_usage(stdout) | 输出机器相关选项帮助文件 |
3 | void md_pop_insert() | 在po_hash中插入伪指令符号 |
4 | void md_begin() | 开始第一pass前的准备工作 |
5 | void md_assemble(s) | 对s(行指令)进行汇编处理 |
6 | int md_estimate_size_before_relax(fragP,segment) | 返回frag需要增长的长度值 |
7 | void md_convert_frag(stdoutput,sec,fragP) | 调整rs_machine_dependent类型fragP的大小,满足sec的要求 |
8 | valueT md_section_align(seg,size) | 调整seg的大小,使之对齐边间 |
9 | void md_apply_fix (fixP, &add_number, this_segment); | 将add_number添加到对应的fixP中 |
10 | arelent* tc_gen_reloc (sec, fixp) | 生成重定位信息 |
11 | void md_number_to_chars(ptr,use,nbytes) | 根据大端还是小端,将数字转化为字符串 |
12 | void md_operand(expression) | 处理操作数,判断表达式 |
13 | void md_atof(type,litP,sizeP) | 字符串转换为浮点 |
14 | symbolS * md_undefined_symbol (char *name) | 处理未定义的符号 |
序号 | 名称 | 功能 |
1 | LOCAL_LABELS_FB | 是否使用局部标号(0~9) |
2 | tc_comment_chars | 是否定义了注释符号 |
3 | TARGET_FORMAT | 确定目标文件格式 |
4 | TARGET_ARCH | 确定机器体系结构 |
5 | md_end() | pass过源文件后的处理 |
6 | TARGET_BYTES_BIG_ENDIAN | 机器是否为大端 |
7 | tc_fix_adjustable(fixP) | 判断这个fix是否可以被gas独立完成 |
8 | TC_FORCE_RELOCATION(fix,seg) | 判断是否需要重定位 |
9 | MD_PCREL_FROM_SECTION(fix,sec) | 返回fix在sec中所要fix的偏移量 |
10 | LISTING_HEADER | 列表文件输出的开头 |
11 | md_operand | 处理操作数 |
12 | md_undefined_symbol | 处理未定义符号 |
序号 | 名称 | 类型 | 作用 |
1 | md_shortopts | const char * | 命令行选项简写 |
2 | md_longopts | struct option | 命令行选项全称 |
3 | md_longopts_size | size_t | 命令行选项大小 |
4 | md_pseudo_table | pseudo_typeS [] | 描述机器相关伪指令集 |
5 | line_separator | char | 行分隔符 |
6 | comment_chars | const char [] | 注释符号 |
7 | line_comment_chars | const char [] | 行注释符 |
8 | md_relax_table | relax_typeS [] | relax表 |
9 | md_short_jump_size | int | short jump的最大长度 |
10 | md_long_jump_size | int | long jump的最大长度 |
11 | EXP_CHARS | const char [] | 幂指数符号 |
12 | FLT_CHARS | const char [] | 浮点数符号 |