色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM匯編指令集之五——乘法指令與乘加指令

          ARM匯編指令集之五——乘法指令與乘加指令

          作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
          ARM微處理器支持的乘法指令乘加指令共有6條,可分為運算結(jié)果為32位和運算結(jié)果為64位兩類,與前面的數(shù)據(jù)處理指令不同,指令中的所有操作數(shù)、目的寄存器必須為通用寄存器,不能對操作數(shù)使用立即數(shù)或被移位的寄存器,同時,目的寄存器和操作數(shù)1必須是不同的寄存器。

          乘法指令與乘加指令共有以下6條:

          本文引用地址:http://cafeforensic.com/article/201611/317601.htm

          1、 MUL指令

          MUL指令的格式為:

          MUL{條件}{S}目的寄存器,操作數(shù)1,操作數(shù)2

          MUL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果放置到目的寄存器中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的有符號數(shù)或無符號數(shù)。

          指令示例:

          MUL R0,R1,R2;R0 = R1×R2

          MULS R0,R1,R2;R0 = R1×R2,同時設(shè)置CPSR中的相關(guān)條件標志位

          2、 MLA指令

          MLA指令的格式為:

          MLA{條件}{S}目的寄存器,操作數(shù)1,操作數(shù)2,操作數(shù)3

          MLA指令完成將操作數(shù)1與操作數(shù)2的乘法運算,再將乘積加上操作數(shù)3,并把結(jié)果放置到目的寄存器中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的有符號數(shù)或無符號數(shù)。

          指令示例:

          MLA R0,R1,R2,R3;R0 = R1×R2 + R3

          MLAS R0×R2 + R3,同時設(shè)置CPSR中的相關(guān)條件標志位

          3、 SMULL指令

          SMULL指令的格式為:

          SMULL{條件}{S}目的寄存器Low,目的寄存器低High,操作數(shù)1,操作數(shù)2

          SMULL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位放置到目的寄存器Low中,結(jié)果的高32位放置到目的寄存器High中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的有符號數(shù)。

          指令示例:

          SMULL R0,R1,R2,R3;R0 =(R2×R3)的低32位

          ;R1 =(R2×R3)的高32位

          4、 SMLAL指令

          SMLAL指令的格式為:

          SMLAL{條件}{S}目的寄存器Low,目的寄存器低High,操作數(shù)1,操作數(shù)2

          SMLAL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位同目的寄存器Low中的值相加后又放置到目的寄存器Low中,結(jié)果的高32位同目的寄存器High中的值相加后又放置到目的寄存器High中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的有符號數(shù)。

          對于目的寄存器Low,在指令執(zhí)行前存放64位加數(shù)的低32位,指令執(zhí)行后存放結(jié)果的低32位。

          對于目的寄存器High,在指令執(zhí)行前存放64位加數(shù)的高32位,指令執(zhí)行后存放結(jié)果的高32位。

          指令示例:

          SMLAL R0,R1,R2,R3;R0 =(R2×R3)的低32位+R0

          ;R1 =(R2×R3)的高32位+R1

          5、 UMULL指令

          UMULL指令的格式為:

          UMULL{條件}{S}目的寄存器Low,目的寄存器低High,操作數(shù)1,操作數(shù)2

          UMULL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位放置到目的寄存器Low中,結(jié)果的高32位放置到目的寄存器High中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的無符號數(shù)。

          指令示例:

          UMULL R0,R1,R2,R3;R0 =(R2×R3)的低32位

          ;R1 =(R2×R3)的高32位

          6、 UMLAL指令

          UMLAL指令的格式為:

          UMLAL{條件}{S}目的寄存器Low,目的寄存器低High,操作數(shù)1,操作數(shù)2

          UMLAL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位同目的寄存器Low中的值相加后又放置到目的寄存器Low中,結(jié)果的高32位同目的寄存器High中的值相加后又放置到目的寄存器High中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的無符號數(shù)。

          對于目的寄存器Low,在指令執(zhí)行前存放64位加數(shù)的低32位,指令執(zhí)行后存放結(jié)果的低32位。

          對于目的寄存器High,在指令執(zhí)行前存放64位加數(shù)的高32位,指令執(zhí)行后存放結(jié)果的高32位。

          指令示例:

          UMLAL R0,R1,R2,R3 ;R0 =(R2×R3)的低32位+R0

          ;R1 =(R2×R3)的高32位+R1




          評論


          技術(shù)專區(qū)

          關(guān)閉