zoukankan      html  css  js  c++  java
  • ARM学习笔记7——乘法指令

      ARM乘法指令完成两个数据的乘法,两个32位二进制数相乘的结果是64位的4积。

    其中:

      1、“RadHi:RdLo”是由RdHi(最高有效32位)和RdLo(最低有效32位)链接形成的64位数,“[31:0]”只选取结果的最低有效32位

      2、简单的赋值由“:=”表示

      3、累加(将右边加到左边)是由“+=”表示

    一、MUL乘法指令

      1、作用
        将Rm和Rs中的值相乘,结果的最低32位保存到Rd中
      2、语法格式
        MUL{<condition>}{S} <Rd>,<Rm>,<Rs>
      3、参数说明
        3.1、S:S位(bit[20])决定指令的操作是否影响CPSR中的条件标志位N位和Z位的值。当S=1时,跟新CPSR中的条件标志位的值;当S=0,指令不更新CPSR中的条件标志位。
        3.2、<Rd>:寄存器位目标寄存器
        3.3、<Rm>:第一个乘数所在寄存器
        3.4、<Rs>:第二个乘数所在寄存器

      4、举例:

        R1=R2*R3用指令表示为 MUL R1,R2,R3

    二、MLA乘-累加指令
      1、作用
        将Rm和Rs中的值相乘,再将乘积加上第三个操作数,结果的最低32保存到Rd中
      2、语法格式
        MLA{<condition>}{S} <Rd>,<Rm>,<Rs>,<Rn>
      3、参数说明:
        3.1、<Rd>:寄存器位目标寄存器
        3.2、<Rm>:第一个乘数所在寄存器
        3.3、<Rs>:第二个乘数所在寄存器
        3.4、<Rn>:将要累加到<Rm>*<Rs>结果中的第三操作数
      4、举例说明
        R1=R2*R3+10用指令表示为 : 

         MOV  R0,#0x0A
         MLA  R1,R2,R3,R0

    三、UMULL无符号数长乘指令
      1、作用
        UMULL为64位无符号乘法指令,指令将Rm和Rs中的值做无符号数相乘,结果的低32位保存到RsLo中,而高32位保存到RdHi中。
      2、语法格式
        UMULL{<condition>}{S} <RdLo>,<RdHi>,<Rm>,<Rs>
      3、参数说明
        3.1、<RdLo>:寄存器位目标寄存器,存储结果的低32位值
        3.2、<RdHi>:寄存器位目标寄存器,存储结果的高32位值
        3.3、<Rm>:第一个乘数寄存器
        3.4、<Rs>:第二个乘数寄存器
      4、举例
        完成(R1,R0)=R5*R8操作
        UMULL R0,R1,R5,R8

    四、UMLAL无符号长乘-累加操作指令
      1、作用
        UMLAL位64位无符号长乘-累加指令,指令将Rm和Rs中的值做无符号数相乘,64位乘积与RdHi,RdLo相加,结果的低32位保存到RsLo中,而高32位保存到RdHi中。
      2、语法格式
        UMLAL{<condition>}{S} <RdLo>,<RdHi>,<Rm>,<Rs>

      3、举例
        完成(R1,R0)=R5*R8+(R1,R0)操作
        UMLAL R0,R1,R5,R8

    五、SMULL有符号数长乘操作指令
      1、作用
        SMULL64位有符号长乘指令,指令将Rm和Rs中的值做有符号数相乘,结果的低32位保存到RsLo中,而高32位保存到RdHi中
      2、语法格式
        SMULL{<condition>}{S} <RdLo>,<RdHi>,<Rm>,<Rs>
      3、实例
        完成(R3,R2)=R7*R6  
        SMULL R2,R3,R7,R6

    六、SMLAL有符号长乘-累加操作指令
      1、作用
        SMLAL为64位有符号长乘法指令,指令将Rm和Rs中的值做有符号数相乘,64位乘积与RdHi,RdLo相加,结果的低32位保存到RsLo中,而高32位保存到RdHi中。
      2、语法指令
        SMLAL{<condition>}{S} <RdLo>,<RdHi>,<Rm>,<Rs>
      3、实例
        完成(R3,R2)=R7*R6+(R3,R2)
        SMLAL R2,R3,R7,R6

  • 相关阅读:
    Win10版《芒果TV》全平台直播第89届奥斯卡颁奖典礼,特设第二演播室带来一手资讯
    Win10《芒果TV》商店版跻身Windows商店《热门免费应用》前12强
    Win10《芒果TV》商店版更新v3.2.6:修复后台任务故障,优化推送频次
    Win10《芒果TV》商店版更新v3.2.5:新增会员频道,修复多处细节问题,小年快乐
    Win10《芒果TV》商店版2016-2017春节大礼,每日前100名用户免费领取7天VIP
    Win10版《芒果TV》获评2016年度Windows Store最佳官方/休闲娱乐应用(LiveSino和微软信仰中心联合评选)
    [Cocos2d-x for WP8学习笔记] 一些基本概念,建立自己的启动界面
    [Cocos2d-x for WP8学习笔记] HelloWorld结构分析
    [Cocos2d-x for WP8学习笔记] HelloWorld
    WindowsPhone使用HtmlAgilityPack解析HTML
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3532818.html
Copyright © 2011-2022 走看看