书签 分享 收藏 举报 版权申诉 / 106
上传文档赚钱

类型嵌入式系统设计与实例开发—基于32位微处理器与实时操作系课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3551736
  • 上传时间:2022-09-16
  • 格式:PPT
  • 页数:106
  • 大小:767.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《嵌入式系统设计与实例开发—基于32位微处理器与实时操作系课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    嵌入式 系统 设计 实例 开发 基于 32 微处理器 实时 操作 课件
    资源描述:

    1、1嵌入式系统设计与实例开发嵌入式系统设计与实例开发基于位微处理器与实时操作基于位微处理器与实时操作系统系统讲指令集与编程讲指令集与编程2指令长度l指令集可以是以下任一种指令集可以是以下任一种l 长长 (状态状态)l 长长 (状态状态)l 支持种数据类型支持种数据类型l字节字节 ()()l半字半字 ()()l字字 ()()l字必须被排成个字节边界对齐字必须被排成个字节边界对齐,半字必须被排列成个字节边界对半字必须被排列成个字节边界对齐齐 3 指令集的特点l向后兼容:新版本增加指令,并保持指令向后兼容;向后兼容:新版本增加指令,并保持指令向后兼容;l 结构结构*l 从存储器中读某个值从存储器中读某

    2、个值,操作完后再将其放回存储器中操作完后再将其放回存储器中l只对存放在寄存器的数据进行处理;只对存放在寄存器的数据进行处理;l对于存储器中的数据,只能使用指令进行存取对于存储器中的数据,只能使用指令进行存取4指令格式l指令格式指令格式l 地址指令格式地址指令格式 l在状态中使用在状态中使用l例例指令语法指令语法目标寄存器(目标寄存器()源寄存器源寄存器()源寄存器源寄存器()5 指令分类l数据处理指令数据处理指令 使用和改变寄存器的值使用和改变寄存器的值l数据传送指令数据传送指令 把存储器的值拷贝到寄存器中把存储器的值拷贝到寄存器中 ()()把寄存器中的值拷贝到存储器中把寄存器中的值拷贝到存储

    3、器中()()l控制流指令控制流指令 l分支分支l分支和链接分支和链接,保存返回的地址保存返回的地址,以恢复最先的次序以恢复最先的次序l软件中断指令软件中断指令l程序状态寄存器指令程序状态寄存器指令l协处理器指令协处理器指令6指令编码格式l说明说明l指令执行的条件编码指令执行的条件编码l指令操作符编码指令操作符编码l决定指令的操作是否影响的值决定指令的操作是否影响的值l操作目标寄存器编码操作目标寄存器编码l包含第一操作数的寄存器编码包含第一操作数的寄存器编码l表示第二操作数表示第二操作数 7指令集8数据处理指令 l数据处理指令的类别数据处理指令的类别l算术操作算术操作l按位逻辑操作按位逻辑操作l

    4、寄存器移位操作寄存器移位操作l比较操作比较操作l操作数操作数:宽宽;有种指定操作数的方式有种指定操作数的方式l来自寄存器来自寄存器l第二操作数可以是常数第二操作数可以是常数(立即数立即数)l移位寄存器操作数移位寄存器操作数l结果结果:宽宽,放在寄存器中放在寄存器中l长乘法产生位结果长乘法产生位结果9数据处理指令 *cond0 0operand 2#opcodeSRnRd3128 27 26 25 2421 20 1916 1512 110目的寄存器第一操作寄存器设置操作码算术/逻辑功能8-bit 立即数125118 70#rotRm11765 430#shiftRm025118 765 430

    5、RsSh010Shimmediate alignmentimmediate shift lengthshift typesecond operand register移位寄存器长度10数据处理指令 Opcode24:21MnemonicMeaningEffect0000ANDLogical bit-wise ANDRd:=Rn AND Op20001EORLogical bit-wise exclusive ORRd:=Rn EOR Op20010SUBSubtractRd:=Rn-Op20011RSBReverse subtractRd:=Op2-Rn0100ADDAddRd:=Rn+Op2

    6、0101ADCAdd with carryRd:=Rn+Op2+C0110SBCSubtract with carryRd:=Rn-Op2+C-10111RSCReverse subtract with carryRd:=Op2-Rn+C-11000TSTTestScc on Rn AND Op21001TEQTest equivalenceScc on Rn EOR Op21010CMPCompareScc on Rn-Op21011CMNCompare negatedScc on Rn+Op21100ORRLogical bit-wise ORRd:=Rn OR Op21101MOVMov

    7、eRd:=Op21110BICBit clearRd:=Rn AND NOT Op21111MVNMove negatedRd:=NOT Op211数据处理指令 ,算术操作算术操作按位逻辑操作按位逻辑操作,()寄存器移位寄存器移位,比较操作比较操作,12数据处理指令 l指令是把一个数送到目标寄存器中,可以是寄存器,也可以是指令是把一个数送到目标寄存器中,可以是寄存器,也可以是立即数。立即数。l指令语法:指令语法:l 指令指令 ,l例:例:,l ,l ,13桶形移位器桶形移位器Rd结果N预处理未预处理RmRn14桶形移位器的使用l ,l ,(逻辑左移两位:(逻辑左移两位:);l l使用条件比较指

    8、令使用条件比较指令l();l 23条件执行l所有的指令都可以所有的指令都可以条条件件执执行行l指令的指令的执执行行与与否取否取决决于寄存器的于寄存器的,标标志位志位l所有的指令都可以解所有的指令都可以解压压成全部成全部条条件指令件指令l l ()l ()l ()l ()l ()l ()l ()l ()l ()l ()l ,()l ,()l ,()l ,()l l 31 27 0 Cond 24乘法指令集l在寄存器在寄存器产产生位生位值值cond0 0 0 0R m3128 2724 2321 20 1916 1512 118 74301 0 0 1R sR n/R dLoR d/R dH im

    9、 ulS25乘法l例子例子 (乘法乘法,乘法累加器乘法累加器)l注意注意l最低最低 置于结果寄存器中置于结果寄存器中,其余被忽略其余被忽略 l不支持第二立即操作数不支持第二立即操作数l结果寄存器与源寄存器必须不同结果寄存器与源寄存器必须不同 l ,26数据传送指令 l单指令传送单指令传送 (,)(,)l单字单字(),(),半字半字()()以及字节以及字节()()传送传送l寻址寻址l寄存器偏移寄存器偏移l地址地址 基址基址 寄存器偏移寄存器偏移l立即数偏移立即数偏移l地址地址 基址基址 立即数常数立即数常数l后变址后变址:l前变址前变址:l回写回写l如果可能如果可能,更新基址寄存器更新基址寄存器

    10、27单寄存器传送指令把一个字装入一个寄存器把一个字装入一个寄存器从一个寄存器保存一个字或者一个字节从一个寄存器保存一个字或者一个字节把一个字节装入一个寄存器把一个字节装入一个寄存器从一个寄存器保存一个字节从一个寄存器保存一个字节把一个半字节装入一个寄存器把一个半字节装入一个寄存器从一个寄存器保存一个半字从一个寄存器保存一个半字把一个有符号字节装入寄存器把一个有符号字节装入寄存器()把一个有符号半字装入寄存器把一个有符号半字装入寄存器()28寻址方式变址模式变址模式数据数据基址寄存器基址寄存器示例示例回写前变址回写前变址基址寄存器加上偏基址寄存器加上偏移移,!前变址前变址不变不变,后变址后变址基

    11、址寄存器加上偏基址寄存器加上偏移移,29例子l ,l l l回写型前变址寻址:回写型前变址寻址:,!l ,l前变址寻址:前变址寻址:,l,l后变址寻址:后变址寻址:,l,30数据传送指令 :,;,;:,.:.:.:,;,;:,.:.:.31多寄存器数据传送指令 l多数据传送指令多数据传送指令 (,)(,)l()()或或 ()()当前可访问寄存器的任意子集当前可访问寄存器的任意子集l 使用使用l堆栈堆栈:l上下文切换上下文切换:保存或重新存储工作寄存器保存或重新存储工作寄存器l块拷贝块拷贝:在主存储器中移动大数据块在主存储器中移动大数据块l寻址寻址l l l回写到基址寄存器回写到基址寄存器 32

    12、多寄存器数据传送指令的要点l多寄存器指令会增加中断的延迟,因为不会打断正在执行的指令多寄存器指令会增加中断的延迟,因为不会打断正在执行的指令去响应中断,而必须等到指令执行完成;去响应中断,而必须等到指令执行完成;l一般编译器将提供一个选项以控制指令可以传送的最大寄存器数一般编译器将提供一个选项以控制指令可以传送的最大寄存器数目,以限制最大中断延迟。目,以限制最大中断延迟。33多寄存器传送指令的寻址模式寻址模式寻址模式描述描述起始地址起始地址结束地址结束地址!执行后增加执行后增加*执行前增加执行前增加*执行后减少执行后减少*执行前减少执行前减少*注:!决定的值是否随着传送而改变34例子要求:保存

    13、到内存地址,并且更新基址寄存器要求:保存到内存地址,并且更新基址寄存器:,执行操作:执行操作:!,(执行后增加执行后增加):35多寄存器传送寻址模式!,!,!,!,36例:将存储器中的连续数据装载到寄存器l ,l ,l ,l ,l执行指令:执行指令:!,l ,l ,l ,l 地址指针 存储地址 数据37例:完成一个存储器数据块拷贝l注:注:存放源数据的起始地址存放源数据的起始地址l 存放目标起始地址存放目标起始地址l 存放源结束地址存放源结束地址l l !,;装载字节并更新指针装载字节并更新指针l !,;存储字节并更新指针存储字节并更新指针l ,;是否到达结束地址是否到达结束地址l ;不相等跳

    14、转不相等跳转目的目的源源高地址低地址拷贝存储地址r9r11r1038堆栈操作l使用多寄存器指令来完成堆栈操作;使用多寄存器指令来完成堆栈操作;l使用堆栈时,需要确定堆栈在存储空间中是向上生长(使用堆栈时,需要确定堆栈在存储空间中是向上生长(递增的递增的“”“”)还是向下生长(递减的)还是向下生长(递减的“”“”););l满堆栈(满堆栈(“”“”)是指堆栈指针指向堆栈的最后一个已使)是指堆栈指针指向堆栈的最后一个已使用的地址或满位置;相反,空堆栈(用的地址或满位置;相反,空堆栈(“”“”)是指指向堆)是指指向堆栈的第一个没有使用的地址或空位置;栈的第一个没有使用的地址或空位置;39堆栈操作寻址方

    15、式寻址方式寻址方式说明说明递增满递增满递减满递减满递增空递增空递减空递减空40LDMFD sp!,r4-r7,pcSP100FF1234AOBE80341010123484209753r41r5 14544r60r712lr9048pc9020r4100100FFr5FF1234r61234A0BEr7A0BE8034pc8034堆栈r4100r5FFr61234r7A0BElr8034ABCD8765102E16FFFF1010123484209753存储器顶存储器顶SPSPSPOld SP100FF1234A0BE8034l堆栈操作通过块传送指令来完成堆栈操作通过块传送指令来完成:l()块

    16、存储块存储 l()块装载块装载 !,41例:把寄存器内容放入堆栈,更新 地址 数据 地址 数据:,执行指令:执行指令:!,:,42单数据交换指令 l单数据交换单数据交换 ()()l在寄存器和外部存储器之间交换字节或字在寄存器和外部存储器之间交换字节或字l读存储器和写存储器是是放在一起的读存储器和写存储器是是放在一起的l原子指令原子指令l执行时不能中断执行时不能中断l当当 信号输出操作时信号输出操作时,外部存储器管理单元被锁定外部存储器管理单元被锁定,当当l多线程操作时使程序同步多线程操作时使程序同步(支持支持)l锁定锁定l信号量信号量43l在寄存器和存储器之间,由一次存储器读和一次存储器写组成

    17、的原子操作。完成在寄存器和存储器之间,由一次存储器读和一次存储器写组成的原子操作。完成一个字节或字的交换。一个字节或字的交换。l语法:语法:l ,l可用作信号量可用作信号量l不能由编译产生,必须使用汇编器。不能由编译产生,必须使用汇编器。321存储器存储器44指令的用法l ,l ,l执行操作:执行操作:,l:l ,l ,l交换指令多用于实现操作系统中的信号量和互斥操作,该指令有交换指令多用于实现操作系统中的信号量和互斥操作,该指令有修饰符,即有字交换和字节交换两种形式;修饰符,即有字交换和字节交换两种形式;45指令应用示例 ,注:信号量指向的单元是或,如果为,则表示该服务被另一个过程注:信号量

    18、指向的单元是或,如果为,则表示该服务被另一个过程使用,程序继续循环,直至为使用,程序继续循环,直至为46软件中断()l产生一个异常陷阱,跳转到产生一个异常陷阱,跳转到 硬件向量。硬件向量。l 处理程序可以检测号,从而决定采取何种操作。处理程序可以检测号,从而决定采取何种操作。l通过机制,运行在用户模式下的应用程序,可请求操作系统执行通过机制,运行在用户模式下的应用程序,可请求操作系统执行一系列特权操作。一系列特权操作。l语法:语法:l 47软件中断()执行的操作指令指令名称名称执行操作执行操作软件中断软件中断指令后面的指令地址指令后面的指令地址模式模式(屏蔽中断)屏蔽中断)48中断处理程序l处

    19、理软件中断的代码段称为中断处理程序(处理软件中断的代码段称为中断处理程序(),中断处理程序是通中断处理程序是通过执行指令的地址获取软件中断号,指令地址是从计算出来的;过执行指令的地址获取软件中断号,指令地址是从计算出来的;l号的确定方法:号的确定方法:l ()()条件域条件域49处理程序应用示例l ;保存寄存器和保存寄存器和l l !,l l ,l l ,l ;l l l !,50控制和分支指令l控制指令控制指令l分支和分支连接分支和分支连接l跳到希望的指令中跳到希望的指令中l保存当前的并返回保存当前的并返回 ()()l分支和交换分支和交换l跳到期望的指令中与指令集交换跳到期望的指令中与指令集

    20、交换l :.:.l :.:.cond1 0 1L24-bit signed word offset3128 2725 24 230condRm0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 03128276 5 4 301L51l:l :l处理器把偏移量左移两位,进行符号扩展后再与相加处理器把偏移量左移两位,进行符号扩展后再与相加 l跳转范围:跳转范围:?l如何执行长跳转?如何执行长跳转?偏移量偏移量 条件码区域条件码区域 分支指令52控制流指令Branch Interpretation Normal uses B BAL Unconditional Alw

    21、ays Always take this branch Always take this branch BEQ Equal Comparison equal or zero result BNE Not equal Comparison not equal or non-zero result BPL Plus Result positive or zero BMI Minus Result minus or negative BCC BLO Carry clear Lower Arithmetic operation did not give carry-out Unsigned compa

    22、rison gave lower BCS BHS Carry set Higher or same Arithmetic operation gave carry-out Unsigned comparison gave higher or same BVC Overflow clear Signed integer operation;no overflow occurred BVS Overflow set Signed integer operation;overflow occurred BGT Greater than Signed integer comparison gave g

    23、reater than BGE Greater or equal Signed integer comparison gave greater or equal BLT Less than Signed integer comparison gave less than BLE Less or equal Signed integer comparison gave less than or equal BHI Higher Unsigned comparison gave higher BLS Lower or same Unsigned comparison gave lower or s

    24、ame 53分支和链接指令l分支子程序分支子程序 ()()l嵌套子程序嵌套子程序;.;:.;,;.:;!,.!,:.,;54请求管理程序l管理程序是在特权级操作的程序管理程序是在特权级操作的程序,它可以实现用户级程序不能实它可以实现用户级程序不能实现的任务现的任务l:l 包括包括 ()();55转移表l根据程序计算值调用一个子程序根据程序计算值调用一个子程序.:,:,.:,;?,:.56程序状态寄存器访问指令l程序状态寄存器访问指令程序状态寄存器访问指令(,)(,)l 程序状态寄存器到通用寄存器的数据传送指令程序状态寄存器到通用寄存器的数据传送指令l 通用寄存器到程序状态寄存器的数据传送指令通

    25、用寄存器到程序状态寄存器的数据传送指令57 传送指令l和允许传送和允许传送 中的内容到从一个通用寄存器中。中的内容到从一个通用寄存器中。l语法:语法:l ,;l ;l在这里:在这里:l l 的任意组合的任意组合l也允许送一个立即数到也允许送一个立即数到 l l用户模式下,所有位均可以被读取,但只有条件标志位用户模式下,所有位均可以被读取,但只有条件标志位()可被写。可被写。2731N Z C V Q2867I F T mode1623 815 54024fsxc U n d e f i n e dJ58协处理器指令 l协处理器协处理器l一般原理是通过增加核扩展指令集一般原理是通过增加核扩展指令

    26、集l :如如 .等系统控制器等系统控制器l寄存器寄存器l协处理器专用协处理器专用l 控制数据流控制数据流l协处理器只包含数据处理和存贮器传送操作协处理器只包含数据处理和存贮器传送操作l协处理器数据操作协处理器数据操作 ()()l这类指令是用来告诉协处理器执行某些内部操作这类指令是用来告诉协处理器执行某些内部操作l无结果返回并不等待操作完成无结果返回并不等待操作完成cond1 1 1 0C R m3128 2724 2320 1916 1512 118 75 430C op1C R nC R dC P#C op2059协处理器指令l体系支持个协处理器体系支持个协处理器l针对每个协处理器的指令占用

    27、针对每个协处理器的指令占用 指令集中的固定部分指令集中的固定部分 l如果相应的协处理器不存在,如果相应的协处理器不存在,将发生一个未定义指令异常。将发生一个未定义指令异常。l这有三种协处理器指令这有三种协处理器指令l协处理器数据处理指令协处理器数据处理指令l:初始化协处理器数据处理操作:初始化协处理器数据处理操作l协处理器寄存器传送指令协处理器寄存器传送指令l:从从 寄存器移到协处理器寄存器寄存器移到协处理器寄存器l:从协处理器寄存器移到:从协处理器寄存器移到 寄存器寄存器l协处理器存储器传送指令协处理器存储器传送指令l:从存储器装载到协处理器寄存器:从存储器装载到协处理器寄存器l:从协处理器

    28、寄存器存储到存储器:从协处理器寄存器存储到存储器60常量的装载l指令不用于将一个位的常量装入寄存器,因为本身是位的,所以指令不用于将一个位的常量装入寄存器,因为本身是位的,所以指令中不可能再定义一个普通的位常量;指令中不可能再定义一个普通的位常量;l增加了条伪指令,把位常量送入寄存器:增加了条伪指令,把位常量送入寄存器:l例:例:l ,;常量装载伪指令常量装载伪指令l ,;地址装载伪指令地址装载伪指令61l为允许装载大常数,汇编器提供了一条伪指令为允许装载大常数,汇编器提供了一条伪指令:l,l它可能汇编成下列指令:它可能汇编成下列指令:l 。l或或l 指令,从数据池(指令,从数据池()读取常数

    29、。)读取常数。l l l ,l推荐使用这种方法把常数装入寄存器推荐使用这种方法把常数装入寄存器。装载 常数62 指令 指令对于由编译器产生的大部分指令:对于由编译器产生的大部分指令:没有条件执行没有条件执行源、目的寄存器必须相同源、目的寄存器必须相同仅能使用低寄存器仅能使用低寄存器常数大小有限制常数大小有限制不能使用在线移位器不能使用在线移位器关于指令集l 是是 指令集指令集l代码密度优化代码密度优化(总代码大小约为指令的)(总代码大小约为指令的)l使用窄总线存储器时可以大大提高性能。使用窄总线存储器时可以大大提高性能。l是是 指令集的一个子集。指令集的一个子集。l核存在一个执行状态核存在一个

    30、执行状态 状态状态l和之间切换使用和之间切换使用 指令指令63写 汇编程序l不是一个不是一个“好好”指令集!指令集!l最好用编译器来产生最好用编译器来产生l约束并不一致约束并不一致l手动编码使用指令集比较好手动编码使用指令集比较好 l更多细节,参看:更多细节,参看:l“”64与汇编程序设计与汇编程序设计65生成二进制文件的过程66编译器的基本功能l规定汇编语言的语法规则规定汇编语言的语法规则l.l预编译预编译()标准汇编语言标准汇编语言l编译编译二进制文件二进制文件67预编译()l处理伪指令处理伪指令()l伪指令:做为汇编语言的参数,或被预编译器识别,翻译成标准伪指令:做为汇编语言的参数,或被

    31、预编译器识别,翻译成标准汇编语言。汇编语言。l伪指令的功能:伪指令的功能:l提高程序的可读性和易维护性提高程序的可读性和易维护性l易于编程易于编程68链接器()l将多个目标文件链接成一个可执行的文件将多个目标文件链接成一个可执行的文件l编译器只负责把程序翻译成机器码,但处理与存储器地址相关的编译器只负责把程序翻译成机器码,但处理与存储器地址相关的内容,这部分工作由链接器来完成;内容,这部分工作由链接器来完成;l一个程序编译完成后会分成代码段(一个程序编译完成后会分成代码段()、数据段(、数据段()、零初始化段(、零初始化段(),需要把不同的程序的不同区段链接成一个完整连续的区。,需要把不同的程

    32、序的不同区段链接成一个完整连续的区。69符号定义伪指令数据定义伪指令汇编控制伪指令信息报告伪指令宏指令以及其他伪指令。伪指令70符号定义伪指令l用于定义汇编程序中的变量、对变量赋值以及定义寄存器的别名等。l用于定义局部变量的、;l用于定义全局变量的、;l用于对变量赋值的、;l为通用寄存器列表定义名称的。71符号定义伪指令 .、格式:局部变量名说明:、伪指令用于定义一个汇编程序中的局部变量,并初始化,其中:定义一个局部的数字变量,初始化为;定义一个局部的逻辑变量,初始化为;定义一个局部的字符串变量,初始化为空串;这三条伪指令用于声明局部变量,在其局部作用范围内变量名必须唯一。72符号定义伪指令

    33、.、格式:变量名说明:、伪操作定义一个汇编程序中的全局变量,并初始化,其中:定义一个全局数字变量,并初始化为;定义一个全局逻辑变量,并初始化为“”;定义一个全局字符串变量,并初始化为空串;这三条伪指令用于定义全局变量,因此在整个程序范围内变量名必须唯一。73符号定义伪指令 .、格式:变量名表达式说明:给一个数字变量赋值;:给一个逻辑变量赋值;:给一个字符串变量赋值;格式中的变量名必须为已经定义过的全局或局部变量,表达式为将要赋给变量的值。74 符号定义伪指令.格式:名称 寄存器列表说明:可用于对一个通用寄存器列表定义名称,该名称可在指令中使用。在指令中,列表中的寄存器为根据寄存器的编号由低到高

    34、访问次序,与列表中的寄存器排列次序无关。75 数据定义伪指令l用于为数据分配存储单元,同时也可完成已分配存储单元的初始化。ll l l l l l l76数据定义伪指令.:标号 表达式 说明:用于分配一块字节单元并用伪指令中指定的表达式进行初始化。其中,表达式可以为使用双引号的字符串或的数字可用“”代替。.:标号 表达式 说明:分配一段半字存储单元并用表达式值初始化,它定义的存储空间是半字对齐的。77数据定义伪指令.:标号 表达式 说明:伪指令用于分配一块字存储单元并用伪指令中指定的表达式初始化,它定义的存储空间是字对齐的。也可用“”代替。.:标号 表达式 说明:用于分配一块以个字节为单位的存

    35、储区域并用伪指令中指定的表达式初始化,它定义的存储空间是字对齐的。功能跟类似,只是分配的存储单元不严格字对齐。78数据定义伪指令:标号 表达式 说明:用于为双精度的浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化,它定义的存储空间是字对齐的,每个双精度的浮点数占据两个字单元。功能跟类似,只是分配的存储单元不严格字对齐。:标号 表达式 说明:用于为单精度的浮点数分配一片连续的字存储单元并用表达式初始化,它定义的存储空间是字对齐的,每个单精度浮点数使用一个字单元功能跟类似,只是分配的存储单元不严格字对齐。79数据定义伪指令.:标号 表达式 说明:用于分配一片连续的存储区域并初始化为,表

    36、达式为要分配的字节数也可用“”代替。.:表达式 ,基址寄存器 说明:定义一个结构化的内存表的首地址,“”可以用来代替。.:标号 字节数 说明:用于定义一个结构化内存表中的数据域,“”可用来代替。80汇编控制伪指令l汇编控制伪操作用于指引汇编程序的执行流程:l、l、l、l81汇编控制伪指令.、$标号 宏名$参数,$参数,指令序列 说明:表明一个宏定义的开始,则表示一个宏的结束,、前呼后应可以将一段代码定义为一个整体,又称宏,然后就可以在程序中通过宏的名称及参数调用该段代码。和之间的代码称为宏定义体,在宏定义体的第一行声明宏的原型,宏的原型包含宏名、所需的参数。在源程序被编译时,汇编器将宏调用展开

    37、,用宏定义中的指令序列替换程序中的宏调用,并将实际参数的值传递给宏定义中的参数。注意宏操作可以嵌套使用,并可以在编译时用选项加以控制。82 汇编控制伪指令.、逻辑表达式 代码段 代码段 说明:、伪操作能根据逻辑表达式的成立与否决定是否在编译时加入某个指令序列。、可以分别用“”、“”、“”代替。、伪指令可以嵌套使用。83 汇编控制伪指令.、:逻辑表达式 代码段 说明:和伪指令能根据逻辑表达式的成立与否决定是否循环执行这个代码段。、伪指令可以嵌套使用。.:说明:用于从宏中退出。84 其他伪指令:逻辑表达式 说明:用来表示程序的编译必须满足一定的条件,如果逻辑表达式不满足,则编译器会报错。:表达式,

    38、偏移量 说明:伪操作可以通过填充字节使当前的位置满足一定的对齐方式。其中,表达式的值为的幂,如、等,用于指定对齐方式。如果伪操作中没有指定表达式,则编译器会将当前位置对齐到下一个字的位置。偏移量也是个数字表达式,如果存在偏移量,则当前位置的自动对齐到:的表达式值次方偏移量。85其他伪指令:段名 属性,说明:用于定义一个代码段、数据段或者特定属性的段。如果段名以数字开头,那么该段名需用“”字符括起来,如,用的编译器产生的代码一般也用“”括起来。属性部分表示该代码段数据段的相关属性,多个属性可以用“,”分隔。常见属性如下:定义数据段。:定义代码段。:表示本段为只读。:表示本段可读写。表达式:对齐方

    39、式为表达式次方,例如:表达式,则对齐方式为字节对齐。表达式的取值范围为。属性:定义一个通用段,这个段不包含用户代码和数据。86 其他伪指令、:说明:伪操作指示编译器后面的代码为位的指令。伪操作指示编译器后面的代码为位的指令。:说明:用于指定汇编程序的入口。在一个完整的汇编程序中至少要有一个,程序中也可以有多个,此时,程序的真正入口点可在链接时指定,但在一个源文件里最多只能有一个或者没有。87 其他伪指令:说明:“”告诉编译器已经到了源程序的结尾。:名称 表达式,类型 说明:用于将程序中的数字常量、标号、基于寄存器的值赋予一个等效的名称,这一点类似于语言中的,可用“*”代替。如果表达式为位的常量

    40、,我们可以指定表达式的数据类型,类型域可以有以下三种:88 其他伪指令:标号 说明:在程序中声明一个全局标号,该标号可以被其他的文件中的代码引用。用户也可以用代替。可选项声明其他文件有同名的标号,则该同名标号优先于该标号被引用。:标号,说明:告诉编译器这个标号要在当前源文件中使用,但标号是在其他的源文件中定义的。不管当前源文件是否使用过该标号,这个标号都会加入到当前源文件的符号表中。,选项表示如果所有的源文件都没有找到这个标号的定义,编译器也不会提示错误信息。编译器在多数情况下将该标号置为,如果这个标号被或指令引用,则将或指令替换为操作。89其他伪指令:标号 说明:告诉编译器所使用的标号要在当

    41、前源文件中引用,但该标号是在其他的源文件中定义的。与不同的是,如果当前源文件实际上没有引用该标号,该标号就不会被加入到当前文件的符号表中。,选项意义同。:名称 表达式 说明:用于给一个寄存器定义一个别名,以便程序员记忆该寄存器的功能。其中,名称为给寄存器定义的别名,表达式为寄存器的编码。90其他伪指令:文件名 说明:将一个源文件包含到当前的源文件中,并将被包含的源文件在当前位置展开进行汇编处理。和作用等效的。我们通常这样使用这个伪指令:在某源文件中定义一些宏指令,用和定义结构化的数据类型,用定义常量的符号名称,然后用将这个源文件包含到其他的源文件中。只能用于包含源文件,包含其他文件则需要使用伪

    42、指令。:文件名 说明:将一个数据文件或者目标文件包含到当前的源文件中,编译时被包含的文件不作任何变动的存放在当前文件中,编译器从后面开始继续处理。91其他伪指令:名称 说明:可以给一个局部变量定义作用范围。在程序中未使用该伪指令时,局部变量的作用范围为所在的,而使用后,局部变量的作用范围为当前和下一个之间。92应用示例系统初始化复位动作初始化过程93初始化堆栈()l第一步第一步:定义种操作模式定义种操作模式l,l (:定义存储器的起始地址定义存储器的起始地址)l ;(:预留的存储空间预留的存储空间)l ;l ;l ;l ;l ;94初始化堆栈()l第二步第二步:定义各种模式下的寄存器定义各种模

    43、式下的寄存器设定未定义指令模式堆栈:设定中止模式堆栈:95初始化堆栈()设定中断模式堆栈:设定快速中断模式堆栈:96初始化堆栈()设定监控模式堆栈:97(程序调用规范)寄存器变量寄存器变量必须保护必须保护作为函数传递的参数值作为函数传递的参数值()编译器使用一套规则的来设置寄存器的用法 ()标志位可被函数调用所破坏任何和编译过的代码交互工作的汇编码在接口层必 须满足的规范 如果如果 选项有效,作为栈的基地址选项有效,作为栈的基地址 如果软件堆栈检查有效,作为栈的限制值如果软件堆栈检查有效,作为栈的限制值 可作为临时的一个值栈一样来使用可作为临时的一个值栈一样来使用 子程序内部调用的可改写的寄存

    44、器子程序内部调用的可改写的寄存器 程序计数器程序计数器98参数传递l开始四个字大小的参数直接使用寄存器的来传递开始四个字大小的参数直接使用寄存器的来传递(快速且高效的快速且高效的)l更多的信息可参看更多的信息可参看l如果需要更多的参数,将使用堆栈。如果需要更多的参数,将使用堆栈。(需要额外的指令和慢速的存需要额外的指令和慢速的存储器操作储器操作)l所以通常限制参数的个数,使它为或更少。所以通常限制参数的个数,使它为或更少。l如果不可避免,把常用的参数前个放在中如果不可避免,把常用的参数前个放在中.99l ()l(,l,)ll ;ll()ll ();ll :()100 ()l ():,!:,:,

    45、:!,:,:!,(,);()();“”101 ():,!:,:,:!,:,:!,102循环终止l在在(),()()的循环中,用减到代替加到某个值。的循环中,用减到代替加到某个值。l比如,用下面的代替比如,用下面的代替:l(;)(,)(,)l代替为:代替为:l (;)()()l尽量减少循环的次数尽量减少循环的次数l代码小,且使用更少的寄存器代码小,且使用更少的寄存器.103 ();(;)*;();(;)*;:“”104在程序中调用汇编l在汇编程序中用在汇编程序中用 来定义来定义l在程序中直接调用在程序中直接调用,用声明用声明l正常链接正常链接 (*,*);()*“”;.(,);.,这里所有的参数都是可以用寄存器来传递的,所以不需要在汇编程序中使用来保护105内嵌汇编l允许使用一些不能由编译器自动允许使用一些不能由编译器自动生成的指令生成的指令:l l新的指令新的指令l协处理器指令协处理器指令l通常在关联的内嵌函数中使用通常在关联的内嵌函数中使用l使用变量代替寄存器使用变量代替寄存器l不是一个真正的汇编文件不是一个真正的汇编文件l通过优化器实现通过优化器实现l 入口入口“”();,(,);106

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:嵌入式系统设计与实例开发—基于32位微处理器与实时操作系课件.ppt
    链接地址:https://www.163wenku.com/p-3551736.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库