一个用嵌入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;}