桑楠全套配套课件嵌入式系统原理及应用开发技术 嵌入式系统及应用——第八章.ppt

桑楠全套配套课件嵌入式系统原理及应用开发技术 嵌入式系统及应用——第八章.ppt

ID:51621380

大小:1.94 MB

页数:94页

时间:2020-03-26

桑楠全套配套课件嵌入式系统原理及应用开发技术 嵌入式系统及应用——第八章.ppt_第1页
桑楠全套配套课件嵌入式系统原理及应用开发技术 嵌入式系统及应用——第八章.ppt_第2页
桑楠全套配套课件嵌入式系统原理及应用开发技术 嵌入式系统及应用——第八章.ppt_第3页
桑楠全套配套课件嵌入式系统原理及应用开发技术 嵌入式系统及应用——第八章.ppt_第4页
桑楠全套配套课件嵌入式系统原理及应用开发技术 嵌入式系统及应用——第八章.ppt_第5页
资源描述:

《桑楠全套配套课件嵌入式系统原理及应用开发技术 嵌入式系统及应用——第八章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章嵌入式软件编程核心内容嵌入式程序设计语言汇编语言C语言C与汇编混合编程嵌入式Java编程规范8.1嵌入式程序设计语言一种程序设计语言可以看成是控制某种设备,特别是一种计算机的人为语言。同自然语言一样,它也使用语法和语义规则分别定义其语句结构和涵义程序设计语言的作用在于表述算法,以便更方便地组织和操作信息。程序设计语言的定义中应该包括以下内容功能目标结构表达能力程序设计语言需要较高的精确度和完整性.8.2汇编语言GAS的基本风格与AT&T的差异一、GAS的基本风格1、程序的构成从整体结构上看,一个完整的GAS汇编语言程序需要包括程序名(.title

2、,也称为头信息)、全局定义(.global)、外部引用(.include,.extern)、数据段(.data)、文本段(.text)、主程序(main)、注释(#)等部分。其中,文本段是必不可少的。2、注释以“#”开头的程序行是注释行。3、标识符标识符是由字母和数字组成的一个字符串。定义标识符时,后面必须紧跟一个冒号“:”,表示标识符所在内存单元的地址计数值。标识符作为变量名被外部调用,则需要用.globalprocessname的方式来申明该过程在其他的汇编语言和C语言程序中可以使用外部引用方式调用该过程4、常数的表示在GAS中,数值表示如下:1)

3、二进制数:由0b或者0B开头,如:0b1010101、0B1011110;2)十六进制数:以0x或者0X开头,如:0x4e7、0X1f9;3)八进制数:由0开头,如:0625、0450;4)十进制数:以非零数开头,如:365、13180;5)字符串:由引号括起,如:”string”。5、常用的汇编指示符1).reptcount:表示重复count次;2).macro、.endm:定义宏;3).include“filename:用于将一个程序文件插入到另外一个程序文件中;4).globalname:将name申明为全局符号;5).setname,valu

4、e:申明一个符号常量,程序中使用时要在前面加一个“$”符号;6).balignabs_expr,pad_value:表示将地址对齐;7).p2alignabs_expr,pad_value:表示将地址按2的次方对齐;8).title“heading“:用于在生成符号列表时作为头信息。二、与AT&T的差异1、寄存器名的表达不同在GAS的80386汇编语言中,寄存器的名字前都要加上百分号“%”,而Intel的则没有:1)32位的寄存器:%eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp2)16位的寄存器:%ax,%bx,%cx,

5、%dx,%di,%si,%bp,%sp3)8位的寄存器:%ah,%al,%bh,%bl,%ch,%cl,%dh,%dl4)段寄存器:%cs,%ds,%ss,%es,%fs,%gs5)控制寄存器:%cr0,%cr2,%cr32、数据传送的方向不同GAS汇编语言中,数据的传送方向与Intel宏汇编的方向刚好相反Intel宏汇编命令将ax的内容送到cx中在GAS汇编语言中将cx的内容送到ax中3、操作数位数的表达不同在GAS汇编语言中,操作数的位数由指令的后缀表示,其中后缀为“l”表示32位,“w”表示16位,“b”表示8位。Intel宏汇编则用操作数前缀表

6、示法,需要使用dword、wor、byte等关键字在GAS汇编语言中Intel宏汇编4、立即数的表达不同在GAS的汇编语言中,立即数前要加前缀“$”符号Intel宏汇编语句GAS汇编语句表示将以地址0x16开始的4个字节的内容送到寄存器eax中5、内存引用不同6、长跳转指令不同GAS汇编语言中Intel宏汇编GAS汇编语言Intel宏汇编8.3C语言gcc扩展C51扩展浮点运算支持一、gcc扩展gcc是为Linux配套的C语言编译器,在支持多个版本的ANSIC标准基础上,进行了一些扩展,主要集中在增强C语言的表达能力和语言功能,可通过使用-ansi、-

7、traditional等编译参数来控制扩展功能是否启用。GNU的gcc编译器在嵌入式领域使用的非常广泛,它支持众多的高档嵌入式处理器,如Intel386、Intel960、68000、ADM29K等。这看上去多此一举,而且不符合通用的编程规范,但在替代不安全的宏定义时,显得特别有用,如:要计算两次a和b,有可能带来副作用,如如定义为则可消除该不安全因素。1、表达式内可以包含变量声明、赋值、分支、循环等语句2、局部标识符主要用于限制标识符的作用域,避免名字冲突。其声明必须在语句块的开始,形式如下:当宏定义中有循环判断时,使用比较方便,如:3、内嵌函数gc

8、c的语法中支持函数内定义新函数,该函数的名字在该语句块内有效,也可通过指针传递到该语句块之外,

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

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

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