AssemblerInternals中文版

AssemblerInternals中文版

ID:37925909

大小:131.50 KB

页数:15页

时间:2019-06-02

AssemblerInternals中文版_第1页
AssemblerInternals中文版_第2页
AssemblerInternals中文版_第3页
AssemblerInternals中文版_第4页
AssemblerInternals中文版_第5页
资源描述:

《AssemblerInternals中文版》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AssemblerInternalsThischapterdescribestheinternalsoftheassembler.Itisincomplete,butitmayhelpabit.Thischapterisnotupdatedregularly,anditmaybeoutofdate.·Datatypes:Datatypes·GASprocessing:WhatGASdoeswhenitruns·PortingGAS:PortingGAS·Relaxation:Relaxation·Brokenwords:

2、Brokenwords·Internalfunctions:Internalfunctions·Testsuite:Testsuite1DatatypesThissectiondescribessomefundamentalGASdatatypes.·Symbols:ThesymbolSstructure·Expressions:TheexpressionSstructure·Fixups:ThefixSstructure·Frags:ThefragSstructureSymbols结构体symbol,也就是symbol

3、S,定义在"struc-symbol.h"中。Symbol结构体包含以下的域:·sy_value这是一个expressionS类型,用来描述symbol的值。可以是指向一个或多个其它的symbol,如果是这样的话,它的实际值要等到write_object_file调用resolve_symbol_value时才能知道。expression通常是一个简单的常数。在resolve_symbol_value被调用前,它的值是相对于frag(参见1.1.4节Frags)的偏移量。之后,frag的地址再被加进来。·sy_resol

4、ved当symbol的值已经被完全求解出来时,这个域的值为非零。在最后一次遍历symbol表时使用。·sy_resolving这个域在求解symbol的值时,用来检测循环。·sy_used_in_reloc当symbol被一个重定位项(relocationentry)使用时,这个域的值为非零。如果一个局部symbol被用在重定位实体中,它必须能够将重定位指向其它的symbol,或者在最终的symbol列表中不能被移除掉。·sy_next·sy_previous这些域指向其它的symbolS结构,用来描述一个单向或者双向的

5、链表。(如果没有定义SYMBOLS_NEED_BACKPOINTERS,sy_previous域就会被忽略掉;在BFD_ASSEMBLER情况下,SYMBOLS_NEED_BACKPOINTERS总是被定义的。)应该通过宏symbol_next和symbol_previous来访问这些域。·sy_frag这个域指向存放该symbol的frag(参见1.1.4节Frags)。·sy_used该symbol是否被用作操作数(operand)或者在一个expression中使用。注意:并不是所有的后端都会准确的保存这个信息;当

6、在后端程序中使用symbol时,使用该域的后端需要负责设置它的值。·sy_mri_common该symbol是否是一个在MRI模式下汇编时,通过伪指令COMMON创建的MRIcommonsymbol。·bsym如果定义了BFD_ASSEMBLER,这个域指向BFDasymbol,用于写出目标文件。·sy_name_offset(只在BFD_ASSEMBLER没有被定义时使用。)这是目标文件的字符串表中的该symbol的名字的位置。在一些格式中,起始位置是4,而0位置是用作给未命名的symbol保留。这个域直到调用writ

7、e_object_file时才被使用。·sy_symbol(只在BFD_ASSEMBLER没有被定义时使用。)这是特定格式的symbol结构,用来被写入到目标文件。·sy_number(只在BFD_ASSEMBLER没有被定义时使用。)这是一个24位的symbol数,用来构建重定位表项。·sy_obj这是一个OBJ_SYMFIELD_TYPE类型的特定格式的数据。如果在"obj-format.h"中没有定义这个类型的宏,这个域将不被定义。·sy_tc这是一个TC_SYMFIELD_TYPE类型的特定处理器的数据。如果在"

8、targ-cpu.h"中没有定义这个类型的宏,这个域将不被定义。·TARGET_SYMBOL_FIELD如果定义了这个宏,就会在symbol结构中定义额外的域。这个宏已经被废弃了,应该尽可能的使用OBJ_SYMFIELD_TYPE和TC_SYMFIELD_TYPE来代替。有许多的访问程序可以用来获取symbolS结构

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。