一个用嵌入c汇编写的字符串排序(6410板子试验成功)
来源:互联网 发布:v380s监控软件下载 编辑:程序博客网 时间:2024/05/11 13:29
最近在学习ARM,这是利用汇编写的一个字符串排序,拿出来大家一起分享,交流,学习。本人用的板子是s3c6410板子。
#include <stdio.h>#include <string.h>/*****bubble sort******* * r3 是临时变量 * r0 每次冒泡后最小的值************************/int main(int argc, char **argv){if(argc < 2){printf("%s <string>\n",argv[0]);return -1;}char buf[0x10];strcpy(buf, argv[1]); printf("input>>%s\n",buf);__asm__ __volatile__("movr0, %0\n" //for 1{"again:\n" "mov%0,r0\n" //完成一次冒泡环之后,%0的地址初始化 "ldrbr1,[%0],#1\n" "movr0,%0\n" //r0保存上次索取的值的地址的下一个地址 "cmpr1,#0\n" //if r1 == '\0'"beqend\n" //end"loop: \n" //for 2{"ldrbr2,[%0],#1\n" "cmpr2,#0\n" // if r2 == '\0' "beqagain\n" // break; 进行下一轮冒泡"cmpr1,r2\n" "blplswap\n" //if( r1 > r2 ) swap;"b loop\n" //} //}"swap:\n" //swap"movr3,r2\n""movr2,r1\n""movr1,r3\n" "strbr1,[r0,#-1]\n""strbr2,[%0,#-1]\n""movpc,lr\n" "end:\n" :"r"(buf):"r0","r1","r2","r3"); printf("after sort:%s\n",buf);return 0;}