- 1、本文档共94页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 嵌入式软件编程 核心内容 嵌入式程序设计语言 汇编语言 C语言 C与汇编混合编程 嵌入式Java 编程规范 8.1 嵌入式程序设计语言 一种程序设计语言可以看成是控制某种设备,特别是一种计算机的人为语言。同自然语言一样,它也使用语法和语义规则分别定义其语句结构和涵义 程序设计语言的作用在于表述算法,以便更方便地组织和操作信息。 程序设计语言的定义中应该包括以下内容 功能 目标 结构 表达能力 程序设计语言需要较高的精确度和完整性. 8.2 汇编语言 GAS的基本风格 与ATT的差异 一、GAS的基本风格 1、程序的构成 从整体结构上看,一个完整的GAS汇编语言程序需要包括 程序名(.title,也称为头信息)、全局定义(.global)、外部引用(.include,.extern)、数据段(.data)、文本段(.text)、主程序(main)、注释(#)等部分。其中,文本段是必不可少的。 2、注释 以“#”开头的程序行是注释行。 3、标识符 标识符是由字母和数字组成的一个字符串。定义标识符时,后面必须紧跟一个冒号“:”,表示标识符所在内存单元的地址计数值。 4、常数的表示 在GAS中,数值表示如下: 1)二进制数:由0b或者0B开头,如:0b1010101、 0B1011110; 2)十六进制数:以0x或者0X开头,如:0x4e7、 0X1f9; 3)八进制数:由0开头,如:0625、0450; 4) 十进制数:以非零数开头,如:365、13180; 5)字符串:由引号括起,如:”string”。 5、常用的汇编指示符 1).rept count:表示重复count次; 2).macro、.endm:定义宏; 3).include “filename:用于将一个程序文件插入到另外一个程序文件中; 4).global name:将name申明为全局符号; 5).set name, value:申明一个符号常量,程序中使用时要在前面加一个“$”符号; 6).balign abs_expr,pad_value:表示将地址对齐; 7).p2align abs_expr,pad_value:表示将地址按2的次方对齐; 8).title “heading“:用于在生成符号列表时作为头信息。 二、与ATT的差异 1、寄存器名的表达不同 在GAS的80386汇编语言中,寄存器的名字前都要加上百分号“%”,而Intel的则没有: 1)32位的寄存器:%eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp 2)16位的寄存器:%ax,%bx,%cx,%dx,%di,%si,%bp,%sp 3)8位的寄存器:%ah,%al,%bh,%bl,%ch,%cl,%dh,%dl 4)段寄存器:%cs,%ds,%ss,%es,%fs,%gs 5)控制寄存器:%cr0,%cr2,%cr3 2、数据传送的方向不同 GAS汇编语言中,数据的传送方向与Intel宏汇编的方向刚好相反 3、操作数位数的表达不同 在GAS汇编语言中,操作数的位数由指令的后缀表示,其中后缀为“l”表示32位,“w”表示16位,“b”表示8位。 Intel宏汇编则用操作数前缀表示法,需要使用dword、wor、byte等关键字 4、立即数的表达不同 在GAS的汇编语言中,立即数前要加前缀“$”符号 6、长跳转指令不同 5、内存引用不同 8.3 C语言 gcc扩展 C51扩展 浮点运算支持 一、 gcc扩展 gcc是为Linux配套的C语言编译器,在支持多个版本的ANSI C标准基础上,进行了一些扩展,主要集中在增强C语言的表达能力和语言功能,可通过使用-ansi、-traditional等编译参数来控制扩展功能是否启用。 GNU的gcc编译器在嵌入式领域使用的非常广泛,它支持众多的高档嵌入式处理器,如Intel386、Intel960、68000、ADM29K等。 1、表达式内可以包含变量声明、赋值、分支、循环等语句 这看上去多此一举,而且不符合通用的编程规范,但在替代不安全的宏定义时,显得特别有用,如: 要计算两次a和b,有可能带来副作用,如 如定义为 则可消除该不安全因素。 2、局部标识符 主要用于限制标识符的作用域,避免名字冲突。其声明必须在语句块的开始,形式如下: 当宏定义中有循环判断时,使用比较方便,如: 3、内嵌函数 gcc的语法中支持函数内定义新函数,该函数的名字在该语句块内有效,也可通过指针传递到该语句块之外,这种新函
您可能关注的文档
- 网壳结构的认知.ppt
- X3-3-102-热和内能.ppt
- 九年级语文致女儿的信公开课课件123.ppt
- 平衡产能-节拍生产.ppt
- 第6组 标准成本控制系统案例.ppt
- (教科版)三年级语文上册课件_女主人和乞丐_1.ppt
- 业务人员的自我突.ppt
- SPSS_第06章 相关分析.ppt
- 固定资产投资审计-时现.ppt
- 第十一章 软件技术基础.ppt
- 2025中电建华中电力设计研究院(郑州)社会招聘6人(河南)考前自测高频考点模拟试题及完整答案详解1.docx
- 2025上半年四川成都市公安局所属事业单位考试招聘38人考前自测高频考点模拟试题及答案详解一套.docx
- 2025中共横州市委员会开放和区域协调发展领导小组办公室招聘1名编外人员(广西)考前自测高频考点模拟.docx
- 2025上海市第二轻工业学校公开招聘考前自测高频考点模拟试题含答案详解.docx
- 2025上半年四川阿坝州教育和体育局考核招聘紧缺学科教师149人模拟试卷及完整答案详解1套.docx
- 2025上半年广西民族出版社公开招聘工作人员模拟试卷含答案详解.docx
- 2025上半年四川成都市崇州市卫生健康局所属事业单位考试招聘14人模拟试卷及答案详解一套.docx
- 2025上半年四川成都市民政局所属事业单位考试招聘26考前自测高频考点模拟试题及完整答案详解1套.docx
- 2025上海市消防救援总队政府专职消防员招聘1287人模拟试卷及参考答案详解1套.docx
- 2025上半年重庆市区县事业单位招聘1422人(含两江新区)考前自测高频考点模拟试题附答案详解.docx
最近下载
- 电商代运营合同.doc VIP
- 2023年尤溪县城管协管员招聘笔试试题及答案.docx VIP
- UL2580-2022(Jun28,2022)必威体育精装版教程手册.pdf VIP
- 河北建投新能源有限公司武川大元山(小井)环境影响报告表.doc
- 如何看懂财务报表.pptx VIP
- 水务行业作业指导书SOP:污水处理站管理制度及操作规程(内有17份操作规程).docx VIP
- 2021年尤溪县城管协管员笔试试题及答案解析.docx VIP
- 广西南宁市天桃实验学校2024-2025学年七年级上学期开学分班考英语试题(含解析).docx VIP
- 2025抗菌药物培训试题(+答案).docx VIP
- 公司党建章程范本模板.docx VIP
文档评论(0)