dsp软件开发过程.ppt

上传人:max****ui 文档编号:6338389 上传时间:2020-02-23 格式:PPT 页数:67 大小:1.09MB
返回 下载 相关 举报
dsp软件开发过程.ppt_第1页
第1页 / 共67页
dsp软件开发过程.ppt_第2页
第2页 / 共67页
dsp软件开发过程.ppt_第3页
第3页 / 共67页
点击查看更多>>
资源描述
1 电子与信息工程学院电气工程及其自动化 DSP技术及应用 DigitalSignalProcessor数字信号处理器 樊松讲师 2 第四章DSP软件开发过程 第一节汇编语言程序的编写方法第二节汇编语言程序的汇编第三节COFF的一般概念第四节目标文件的链接 3 软件开发过程 第一节汇编语言程序的编写方法 4 汇编语言程序的编辑 汇编和链接过程 5 1 汇编语言源程序的句法格式 要点 以 asm为扩展名每一行由4个部分组成 格式 标号 空格 助记符 空格 操作数 空格 注释 中的内容为可选择部分 供本程序的其它部分或其它程序调用 标号是任选项 标号后面可以加也可以不加冒号 6 要点 1 标号必须从第 列写起 2 标号最多可达32个字符 可以是A Z a z 0 9 以及 但标号的第1个字符不能是数字 3 引用标号时 标号的大小写必须一致 4 标号的值就是段程序计数器SPC的值 5 如果不用标号 则第一个字母必须为空格 分号或星号 7 要点 建议 标号 空格 助记符 空格 操作数 空格 注释 可以是助记符指令 汇编指令 宏指令和宏调用命令 1 助记符指令 一般用大写 2 汇编命令和宏命令 以句号 开始 且为通常用小写 8 要点 标号 空格 助记符 空格 操作数 空格 注释 1 指令中的操作数或汇编命令中定义的内容2 操作数之间必须用逗号 分开 1 从分号 开始2 可以放在指令或汇编命令后面 也可以放在单独的一行或数行 要点 9 2 汇编语言源程序的数据型式 二进制 如1110001b或1111001B 八进制 226q或572Q 十进制 1234或 1234或 1234 缺省型 十六进制 0A40h或0A40H或0 xA40浮点数 1 623e 23 仅C语言程序中能用 汇编程序不能用 字符 D 字符串 thisisastring 10 3 汇编命令 汇编命令是用来为程序提供数据和控制汇编进程的 C54x汇编器共有64条汇编命令 根据它们的功能 可以将汇编命令分成8类 1 对各种段进行定义的命令 2 对常数 数据和存储器 进行初始化的命令 3 调整SPC 段寄存器 的指令 4 对输出列表文件格式化的命令 5 引用其它文件的命令 6 控制条件汇编的命令 7 在汇编时定义符号的命令 8 执行其它功能的命令 11 例4 1编写计算y a1 x1 a2 x2 a3 x3 a4 x4的汇编源程序 example asmy a1 x1 a2 x2 a3 x3 a4 x4 title example asm 为汇编源程序取名 mmregs 定义存储器映象寄存器STACK usect STACK 10h 分配10个单元的堆栈空间 bssa 4 为系数a分配4个单元的空间 bssx 4 为变量x分配4个单元的空间 bssy 1 为结果y分配1个单元的空间 def c int00 定义标号 c int00 data 定义数据代码段table word1 2 3 4 在标号table开始的8个单元中 word8 6 4 2 为这8个单元赋初值 12 text 定义文本代码段 c int00 STM 0 SWWSR 软件等待状态寄存器置0 不设等待STM STACK 10h SP 设置堆栈指针初值STM a AR1 AR1指向a的地址RPT 7 从程序存储器向数据存储器MVPDtable AR1 重复传送8个数据CALLSUM 调用SUM实现乘法累加和的子程序end Bend 循环等待SUM STM a AR3 将系数a的地址赋给AR3STM x AR4 将变量x的地址赋给AR3RPTZA 3 将A清0 并重复执行下条指令4次MAC AR3 AR4 A 执行乘法并累加 结果放在A中STLA y 将A的低字内容送结果单元yRET 结束子程序 end 结束全部程序 13 4 宏定义和宏调用 1 两者都可以被多次调用 但是把子程序汇编成目标代码的过程只进行一次 而在用到宏指令的每个地方都要对宏指令中的语句逐条地进行汇编 2 在调用前 由于子程序不使用参数 故子程序所需要的寄存器等都必须事先设置好 而对于宏指令来说 由于可以使用参数 调用时只要直接代入参数就行了 3 宏指令可以在源程序的任何位置上定义 但必须在用到它之前先定义好 宏定义可以嵌套 宏指令与子程序的异同 14 macname macro parameter1 parametern 助记符指令与宏指令 mexit endm 宏定义的格式 宏调用的格式 label macname parameter1 parametern 15 1 23 add34 5 ADDRP P1 P2 P3 说明宏功能67add3 macrop1 p2 p3 ADDRP 定义宏89LDp1 A 将参数1赋给A10ADDp2 A 将参数2与A相加11ADDp3 A 将参数3与A相加12STLA ADDRP 将结果A的低字存参数413 endm 结束宏141516 globalabc def ghi adr 定义全局符号1718000000add3abc def ghi adr 调用宏110000001000 LDabc A 宏展开10000010000 ADDdef A10000020000 ADDghi A10000038000 STLA adr 例4 2宏定义 宏调用和宏展开的一个例子 16 第二节汇编语言程序的汇编 汇编语言源程序要素 汇编命令助记符指令宏命令 汇编程序 汇编器 功能 将源程序汇编成可重定位的目标文件 obj文件 如果需要 可以生成一个列表文件 lst文件 将程序代码分段 每段的目标代码都有一个SPC管理 定义和引用全局符号 可在列表后附加交叉引用表 对条件程序块进行汇编 支持宏功能 允许定义宏命令 17 1 运行汇编程序 axm500 inputfile objectfile listingfile options 汇编器是名为asm500 exe的可执行程序 例如axm500cjy asm l s x源程序cjy asm经汇编后将生成一个cjy obj目标文件 列表文件 符号表 在目标文件中 以及交叉引用表 在列表文件中 18 2 列表文件 TMS320C54xCOFFAssemblerVersion3 70TueOct1912 42 592004Copyright c 1996 2001TexasInstrumentsIncorporatedexample asmPAGE11 2 example asmy a1 x1 a2 x2 a3 x3 a4 x4 3 5 mmregs 定义存储器映象寄存器6000000STACK usect STACK 10h 分配10个单元的堆栈空间7000000 bssa 4 为系数a分配4个单元的空间8000004 bssx 4 为变量x分配4个单元的空间9000008 bssy 1 为结果y分配1个单元的空间10 global c int00 定义标号 列表文件中包括源程序语句和目标代码 19 11000000 data 定义数据代码段120000000001table word1 2 3 4 在标号table开始的8个单元中000001000200000200030000030004130000040008 word8 6 4 2 为这8个单元赋初值00000500060000060004000007000214000000 text 定义文本代码段150000007728 c int00STM 0 SWWSR 软件等待状态寄存器置0 不设等待0000010000160000027718STM STACK 10h SP 设置堆栈指针初值0000030010 170000047711STM a AR1 AR1指向a的地址0000050000 18000006EC07RPT 7 从程序存储器向数据存储器190000077C91MVPDtable AR1 重复传送8个数据0000080000 源文件的每一行都会在列表文件中生成一行 包括行号 段程序计数器SPC的数值 汇编后的目标代码 源程序语句 一条指令可以生成1或2个字的目标代码 第2字单独列一行 列出了SPC的数值和目标代码 20 20000009F074CALLSUM 调用SUM实现乘法累加和的子程序00000a000D 2100000bF073end Bend 循环等待00000c000B 2200000d7713SUM STM a AR3 将系数a的地址赋给AR300000e0000 2300000f7714STM x AR4 将变量x的地址赋给AR30000100004 24000011F071RPTZA 3 将A清0 并重复执行下条指令4次000012000325000013B09AMAC AR3 AR4 A 执行乘法并累加 结果放在A中260000148008 STLA y 将A的低字内容送结果单元y27000015FC00RET 结束子程序28 end 结束全部程序NoAssemblyErrors NoAssemblyWarnings Field1源程序语句的行号 用十进制数表示 Field2段程序计数器 SPC 用十六进制数表示 Field4 源程序语句 Field3目标代码 未定义的外部引用 text段重新定位 data段重新定位 sect段重新定位 bss和 usect段重新定位 21 在运行汇编程序时 还可产生交叉引用清单 清单包括符号 定义和引用的位置 交叉引用清单 LABELVALUEDEFNREFINT00002 191ISR2REF321procREF428 列出汇编时定义和引用的每个符号 列出一个赋给符号的4位十六进制数值 或说明符号属性的字符或名称 列出引用此符号的语句的行号 如果此栏是空格 表示此符号还没有被引用过 列出定义符号的语句编号 如果此符号未加定义 则此栏是空格 22 REF 外部引用 globa UNDF 未曾定义过 在 text段定义的符号 在 data段定义的符号 在 sect段定义的符号 在 bss或 usect段定义的符号 交叉引用清单中符号的属性 23 建立公共目标文件格式的目标文件 第三节COFF的一般概念 汇编器和链接器功能的异同 相同点 不同点 汇编器建立的是相对地址COFF文件 即 obj文件链接器建立的是绝对地址COFF文件 即 out文件 汇编器根据汇编命令用适当的段将各部分程序代码和数据连在一起 构成目标文件 链接器的一个任务就是分配存储单元 即把各个段重新定位到目标存储器中 24 1 COFF文件中的段 不同种类的区别 COFF文件种类 C54x汇编器和C编译器建立的是COFF2文件 C54x能够读 写所有形式的COFF文件 缺省值下链接器生成的是COFF2文件 用链接器 vn选项可以选择不同形式的COFF文件 COFF0COFF1COFF2 标题格式不相同数据部分是相同 25 段 sections 的概念 特点 定义 分段的优点 在目标文件中将放置程序 数据 变量的代码分开 便于在链接时作为一个单独的部分分配存储器 由于大多数系统都有好几种形式的存储器 通过对各个段重新定位 可以使目标存储器得到更为有效的利用 段是在存储器图中占据相邻空间的代码或数据块 一个目标文件中的每一个段都是分开的和不相同的 目标文件中的段与目标存储器之间的关系 26 2 COFF文件中的符号 用于处理符号的汇编命令 外部符号 在一个模块中定义的定义 可在另一个模块中引用的符号 def 在当前模块中定义 并可在别的模块中使用的符号 ref 在当前模块中使用 但在别的模块中定义的符号 global 可以是上面的随便哪一种情况 27 x ADD 56h A 定义xBy 引用y defx x在此模块中定义 可被别的模块引用 refy y在这里引用 它在别的模块中定义 注意 汇编时 汇编器把x和y都放在目标文件的符号表中 链接器必须使所引用的符号与相应的定义相匹配 如果链接器不能找到某个符号的定义 就给出不能辨认所引用符号的出错信息 28 3 汇编器对段的处理 用于定义段的汇编命令 bss未初始化段 usect未初始化自定义段 text已初始化程序正文段 data已初始化程序数据段 sect已初始化自定义段 如果汇编语言程序中一个段命令都没有用 那么汇编器把程序中的内容都汇编到 text段 注意 29 1 未初始化段 未初始化段由 bss和 usect命令建立 位置 为变量保留存储器空间 作用 通常将它们定位到RAM区 使用方法 bss符号 字数符号 usect 段名 字数 对应于保留的存储空间第一个字的变量名称 程序员为自定义未初始化段起的名字 30 2 已初始化段 已初始化段是由 text data的 sect命令建立 位置 包含有可执行代码或初始化数据 作用 通常将它们定位到EPROM区 使用方法 text 段起点 data 段起点 sect 段名 段起点 段程序计数器 SPC 定义的一个起始值 程序员为自定义未初始化段起的名字 31 3 子段 位置 子段结构 可以使存储器分配图更加紧密 可单独分配空间或在基段位置之后 使用方法 基段名 子段名 sect text func 子段也有两种 用 sect命令建立的是已初始化段 而用 usect命令建立的段是未初始化段 作用 32 4 段程序计数器 SPC 编址过程 表示一个程序代码段或数据段内的当前地址 作用 一开始 汇编器将每个SPC置0 当汇编器将程序代码或数据加到一个段内时 相应的SPC就增加 如果再继续对某个段汇编 则相应的SPC就在先前的数值上继续增加 链接器在链接时要对每个段进行重新定位 33 例4 4段命令应用举例 2 3 Assembleaninitializedtableinto data 4 50000 data600000011coeff word011h 022h 033h00010022000200337 8 Reservespacein bssforavariable 9 100000 bssbuffer 1011 12 stillin data 13 1400030123ptr word0123h 34 15 16 Assemblecodeintothe textsection 17 180000 text190000100fadd LD0Fh A200001f010aloop SUB 1 A00020001210003f842BCaloop AGEQ00040001 22 23 Anotherinitializedtableinto data 24 250004 data26000400aaivals word0Aah 0BBh 0CCh000500bb000600cc 35 27 Defineanothersectionformorevariables 300000var2 usect newvars 1310001inbuf usect newvars 732 33 Assemblemorecodeinto text 34 350005 text0005110ampy LD0Ah B0006f166mloop MPY 0Ah B0007000a0008f868BCmloop BNOV00090006 Defineanamedsectionforint vectors 0000 sect vectors 00000011 word011h 033h00010033 36 在此例中 一共建立了5个段 text段内有10个字的程序代码 data段内有7个字的数据 vectors是一个用 sect建立的自定义段 段内有2个字的已初始化数据 bss在存储器中为变量保留10个存储单元 newvars是一个用 usect命令建立的自定义段 它在存储器中为变量保留8个存储单元 37 第四节目标文件的链接 链接器主要功能 根据链接命令或链接命令文件 cmd文件 将一个或多个COFF目标文件链接起来 生成存储器映象文件 map 和可执行的输出文件 out COFF目标模块 38 1 运行链接程序 1 键入命令lnk500 2 键入命令lnk500file1 objfile2 obj o 3 键入命令lnk500linker cmd 链接器是名为lnk500 exe的可执行程序 应包含如下内容 file1 objfile2 obj olind out 2 链接器选项 建立一个名为a out 默认情况 的可重新定位的输出模块 39 3 链接器对段的处理 1 把一个或多个COFF目标文件中的各种段作为链接器的输入段 经链接后在一个可执行的COFF输出模块中建立各个输出段 2 为各个输出段选定存储器地址 链接器在对段进行处理时 主要完成 汇编器在需要引用重新定位的符号处都留了一个重定位入口 链接器对符号重定位时 利用这些入口修正对符号的引用值 40 1 将各个段定位到存储器分配图中 这样一来每个段都从一个恰当的地址开始 2 将符号的数值调整到相对于新的段地址的数值 3 调整对重新定位后符号的引用 汇编器在需要引用重新定位的符号处都留了一个重定位入口 链接器对符号重定位时 利用这些入口修正对符号的引用值 41 链接器将输入段组合成一个可执行的目标模块 42 例4 5列表文件中 汇编器为需要重新定位的符号所留的重定位入口 10100X set0100h 给X赋值20000 text30000FO73BY 生成一个重定位入口00000004 40002F020LD X A 生成一个重定位入口00030000 50004F7E0Y RESET 在 text段对X的引用是一次外部引用 text段内对Y的引用是一次内部引用 text段内定义Y 另一个模块中定义的X 这里赋初值 43 假设链接时X重新定位在地址7100h text段重新定位到从地址7200h开始 那么Y的重定位值为7204h 链接器利用两个重定位入口 对目标文件中的两次引用进行修正 f073BY变成f0730004 7204f020LD X A变成f0200000 7100在COFF目标文件中有一张重定位入口表 链接器在处理完之后就将重定位入口消去 以防止在重新链接或加载时再次重新定位 一个没有重定位入口的文件称为绝对文件 它的所有地址都是绝对地址 44 4 链接器命令文件 1 将有多个选项的命令 写成一个链接器命令文件 cmd 2 运行链接器命令文件 cmd 生成一个映象文件 map和一个可执行的输出文件 out 3 进行存储器分配 主要功能 使用方法 lnk500链接器命令文件名 cmd 45 例4 6链接器命令文件举例 a objb obj 输入文件名 oprog out 选项 mprog map 选项 MEMORY MEMORY命令 PAGE0 ROM origin 1000h length 0100hPAGE1 RAM origin 0100h length 0100h SECTIONS SECTIONS命令 text ROM data ROM bss RAM 如果链接器认定一个文件为目标文件 就对它链接 否则就假定它是一个命令文件 并从中读出命令和进行处理 46 1 输入文件名 就是要链接的目标文件和文档库文件 或者是其它的命令文件 如果要调用另一个命令文件作为输入文件 此句一定要放在本命令文件的最后 因为链接器不能从新调用的命令文件返回 2 链接器选项 这些选项既可以用在链接器命令行 也可以编在命令文件中 3 MEMORY和SECTIONS都是链接器命令 如果链接命令文件中没有MEMORY和SECTIONS命令 默认情况 则链接器就从地址0080h一个段接着一个段进行配置 4 注释的内容应当用 和 符号括起来 注意 47 5 两条链接器命令的使用方法 MEMORY命令用来定义目标系统中所包含的各种形式的存储器的存储器配置图 包括对存储器各部分命名 以及规定它们的起始地址和长度 定义系统 1 MEMORY命令 功能 48 EMEORY PAGE0 name1 attr origin constant length constant PAGEn namen attr origin constant length constant MEMORY命令的一般句法 对一个存储空间加以标记 每一个PAGE代表一个完全独立的地址空间 页号n最多可规定为255 取决于目标存储器的配置 通常PAGE0定为程序存储器 PAGE1定为数据存储器 如果没有规定PAGE 则链接器就目标存储器配置在PAGE0 49 EMEORY PAGE0 name1 attr origin constant length constant PAGEn namen attr origin constant length constant MEMORY命令的一般句法 名字可以包含8个字符 A Z a z 均可 名字并没有特殊的含义 用来标记存储器的区间而已 名字都是内部记号 不需要保留在输出文件或者符号表中 不同PAGE上的存储器区间可以取相同的名字 但在同一PAGE内的名字不能相同 且不许重叠配置 50 EMEORY PAGE0 name1 attr origin constant length constant PAGEn namen attr origin constant length constant MEMORY命令的一般句法 任选项 为命名区规定1 4个属性 如果有选项 应写在括号内 当输出段定位到存储器时 可利用属性加以限制 规定一个存储区的起始地址 键入origin org或o都可以 这个值是一个16位二进制常数 可以用十进制数 八进制数或十六进制数表示 规定一个存储区的长度 键入length len或l都可以 51 R规定可以对存储器执行读操作 W规定可以对存储器执行写操作 X规定存储器可以装入可执行的程序代码 I规定可以对存储器进行初始化 如果一项属性都没有选 就可以将输出段不受限制地定位到任何一个存储器位置 任何一个没有规定属性的存储器都默认有全部4项属性 fill 任选项 不常用 在句法中未列出 为没有定位输出段的存储器空单元填充一个数 键入fill或f均可 这是2个字节的整型常数 可以是十进制数 八进制数或十六进制数表示 如fill 0FFFFh 属性选项一共有4项 52 例4 7MEMORY命令的使用方法 ExamplecommandfilewithMEMORYdirective file1 objfile2 obj Inputfiles oprog out Options MEMORY PAGE0 ROM origin cooh length 1000hPAGE1 SCRTCH origin 60h length 20hONCHIP origin 80h length 200h 名为ROM的程序存储器 4K字ROM 起始地址C00h 名为SCRATCH的数据存储器 32字RAM 起始地址60h 名为ONCHIP的数据存储器 512字RAM 起始地址为80h 53 告诉链接器如何将输入段合成输出段在可执行程序中定义输出段规定输出段在存储器中的存放位置允许重新命名输出项 2 SECTIONS命令 功能 在链接器命令文件中 SECTIONS命令用大写字母 紧随其后并用大括号括起来的是关于输出段的详细说明 每一个输出段的说明都从段名开始 段名后面是一行说明段的内容和如何给段分配存储单元的性能参数 注意 54 SECTIONS name property property property name property property property name property property property SECTIONS命令的一般句法 性能参数 1 loadallocation定义将输出段加载到存储器中的什么位置 句法 load allocation或者用大于号代替 load allocation或者省掉 load allocation其中allocation是关于输出段地址的说明 即给输出段分配存储单元 55 text load 0 x1000将输出段 text定位到一个特定地址 text ROM将输出段 text定位到名为ROM的存储区 bss RW 将 bss段定位到属性为R W的存储区 text align 0 x80将 text定位到0 x80开始的存储区 bss load block 0 x80 将 bss定位到一个n字存储器块的任何一个位置 n为2的幂次 text PAGE0将输出段 text定位到PAGE0 如果要用到一个以上参数 可以将它们排成一行 例如 text ROMalign 16 PAGE 2 或者为方便阅读 可用括号括起来 text load ROMalign 16 PAGE 2 56 2 Runallocation用来定义输出段在存储器的什么位置上开始运行 句法 run allocation或者用大于号代替等号run allocation链接器为每个输出段在目标存储器中分配两个地址 一个是加载的地址 另一个是执行程序的地址 通常 这两个地址是相同的 可以认为每个输出段只有一个地址 有时要想把程序的加载和运行区分开 先将程序加载到ROM 然后在RAM中以较快的速度运行 只要用SECTIONS命令让链接器对这个段定位两次就行了 一次是设置加载地址 另一次是设置运行地址 例如 firload ROM run RAM 57 3 Inputsections用来定义由哪些输入段组成输出段 句法 input sections 大多数情况下 在SECTIONS命令中是不列出每个输入文件的输入段的段名的 SECTIONS text data bss 这样 在链接时 链接器就将所有输入文件的 text段链接成 text输出段 其它段也一样 58 SECTIONS text 建立 text输出段 f1 obj text 链接源于f1 obj的 text段 f2 obj sec1 链接源于f2 obj的sec1段 f3 obj 链接源于f3 obj的所有段 f4 obj text sec2 链接源于f4 obj的 text段和sec2段 用文件名和段名来明确地规定输入段 59 如果没有利用MEMORY和SECTIONS命令 链接器就按默认算法来定位输出段 MEMORY PAGE0 PROG origin 0 x0080 length 0 xFF00PAGE1 DATA origin 0 x0080 length 0 xFF80 SECTIONS text PAGE 0 data PAGE 0 cinit PAGE 0 bss PAGE 1 3 MEMORY和SECTIONS命令的默认算法 所有的 text输入段 链接成一个 text输出段 它是可执行的输出文件 所有的 data输入段组合成 data输出段 所有的 bss输入段则组合成一个 bss输出段 text和 data段定位到配置为PAGE0上的存储器 即程序存储空间 60 6 多个文件的链接 例4 8编写复位向量文件vextors asm Resetvectorforexample asm title vectors asm ref c int00 sect vectors B c int00 end 引用example asm中 def c int00定义的标号 编写example asm见例4 1 61 假设目标存储器的配置如下 程序存储器 EPROME000h FFFFh 片外 数据存储器 SPRAM0060h 007Fh 片内 DARAM0080h 017Fh 片内 例4 9根据例4 1和例4 8编写链接器命令文件example cmd vectors objexample obj oexample out mexample map 生成一个映象文件example map 生成可执行的输出文件example out 汇编生成目标文件example obj和vectors obj 62 MWMORY PAGE0 EPROM org 0E000h len 100hVECS org 0FF80h len 04hPAGE1 SPRAM org 0060h len 20hDARAM org 0080h len 100h SECTIONS text EPROMPAGE0 data EPROMPAGE0 bss SPRAMPAGE1STACK DARAMPAGE1 vectors VECSPAGE0 63 链接后生成一个可执行的输出文件example out和映像文件example map 映像文件中给出了存储器的配置情况 程序文本段 数据段 堆栈段 向量段在存储器中的定位表 以及全局符号在存储器中的位置 可执行输出文件example out装入目标系统后就可以运行了 系统复位后 PC首先指向00FF80h 这是复位向量地址 在这个地址上 有一条B c int00指令 程序马上跳转到 c int00语句标号 从程序起始地址0e000h开始执行主程序 64 例4 10由例4 9得到的映像文件example map TMS320C54xCOFFLinkerPCVersion3 70 LinkedThuOct2118 32 222004OUTPUTFILENAME ENTRYPOINTSYMBOL c int00 address 0000e000MEMORYCONFIGURATIONnameoriginlengthusedattrfill PAGE0 EPROM0000e000000001000000001eRWIXVECS0000ff800000000400000002RWIXPAGE1 SPRAM000000600000002000000009RWIXDARAM000000800000010000000010RWIXSECTIONALLOCATIONMAPoutputattributes sectionpageoriginlengthinputsections text00000e000000000160000e00000000016example obj text 0000e01600000000vectors obj text 65 data00000e016000000080000e01600000008example obj data 0000e01e00000000vectors obj data bss10000006000000009UNINITIALIZED0000006000000009example obj bss 0000006900000000vectors obj bss STACK10000008000000010UNINITIALIZED0000008000000010example obj STACK vectors00000ff80000000020000ff8000000002vectors obj vectors GLOBALSYMBOLS SORTEDALPHABETICALLYBYNameaddressname 00000060 bss0000e016 data0000e000 text00000060 bss ffffffff cinit 0000e016 data 0000e01e edata 00000069 end 0000e016 etext ffffffff pinit 0000e000 text 66 00000000 lflags0000e000 c int00ffffffffcinit0000e01eedata00000069end0000e016etextffffffffpinitGLOBALSYMBOLS SORTEDBYSymbolAddressaddressname 00000000 lflags00000060 bss 00000060 bss00000069 end 00000069end0000e000 text 0000e000 text0000e000 c int000000e016etext0000e016 data0000e016 data 0000e016 etext 0000e01eedata0000e01e edata ffffffffpinitffffffff cinit ffffffff pinit ffffffffcinit 18symbols 67 谢谢
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!