http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204gj/Cihihggj.html
MUL{S}
{cond
}Rd
,Rm
,Rs
MLA{S}
{cond
}Rd
,Rm
,Rs
,Rn
MLS{cond
}Rd
,Rm, Rs, Rn
MUL
命令は Rm
と Rs
の値を乗算し、演算結果の下位 32 ビットを Rd
に返します。MLA
命令は Rm
と Rs
の値を乗算し、Rn
の値を加算して、演算結果の下位 32 ビットを Rd
に返します。MLS
命令は Rm
と Rs
の値を乗算し、その結果を Rn
の値から減算して、最終的な演算結果の下位 32 ビットを Rd
に返します。
#include <stdio.h>
main(){
char s[10]="%d\n";
int i1=2;
int i2=3;
int i3=4;
int i4=5;
int ii;
s[0]='%';
asm(" ldr r4,[r7,#0]"); r4←i1=2
asm(" ldr r5,[r7,#4]"); r5←i2=3
asm(" ldr r6,[r7,#8]"); r6←i3=4
asm(" ldr r8,[r7,#12]"); r8←i4=5
asm(" mls r4,r5,r6,r8"); 掛け算 r4←r8-r5xr6=5-3x4=5-12=-7
asm(" add r0,r7,#16"); printf(s,r1);
asm(" mov r1,r4");
asm(" bl printf");
}
akira@dynabookAZ:~/arm1308$ gcc -o 130819C 130819C.c -lm
akira@dynabookAZ:~/arm1308$ ./130819C
-7
akira@dynabookAZ:~/arm1308$
0 件のコメント:
コメントを投稿