{
int sum = 0;
__asm__ __volatile__(
"MOV R5 , %1\n"//val放入寄存器r5
"MOV R1 , #0\n" //sum = 0
"MOV R2 , #1\n"//i = 1
"LOOP:\n"
" ADD R1 , R1 ,R2\n" //sum = sum + i
" ADD R2 , R2 ,#1\n" //i++
" CMP R5 , R2\n" //判斷 i 是否等於val if(i==val)
" BEQ END\n" //若相等 跳轉至END處 break
" B LOOP\n" //若不相等 跳轉至LOOP處進入下次循環 else continue
"END:\n"
"MOV %0 , R1\n" //sum = R1
:"=r"(sum)//輸出
:"r"(val)//輸入
:"memory"
);
return sum;
}
隨便寫了個求和的例子 其余的循環大同小異 不懂可以繼續探討 運行之前請交叉編譯然後在ARM平臺上運行