最近在学习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__(
"mov r0, %0\n"
//for 1{
"again:\n"
"mov %0,r0\n" //完成一次冒泡环之后,%0的地址初始化
"ldrb r1,[%0],#1\n"
"mov r0,%0\n" //r0保存上次索取的值的地址的下一个地址
"cmp r1,#0\n" //if r1 == '\0'
"beq end\n" //end
"loop: \n" //for 2{
"