ARM Assembly函数用于替换字符串中的特定字符

时间:2016-03-23 19:16:25

标签: assembly arm inline-assembly

我正在编写ARM汇编函数,它将字符串中的特定字符替换为另一个字符串,并计算结束时替换发生的次数。到目前为止,我已经这样做了:

.global subs    
subs:   
    stmfd sp!, {v1-v6, lr} //string entry
    mov v1, #0 //set index to 0
    mov v2, #0 // set count to 0       
loop :
    ldrb v3, [a1], #1
    cmp a2, v3
    strbeq a2, [a1, #-1]
    cmp v3, #0
    bne loop
    mov     a1,v2 //return value    
    ldmfd   sp!, {v1-v6, pc}
.end

它没有给出正确的输出。它只显示第一个字符。 C语言中的等效代码是:

#include <stdio.h>
#include <stdlib.h>

extern int replace( char * s, char lr, char rp ) ;

int main( int argc, char * argv[] )
{
int result ;
char lr = 'e' ;
char rp = 'X' ;
char str[] = "easy to replace" ;

result = replace( str, lr, rp ) ;
printf( "%d changes, %s\n", result, str ) ;

exit( 0 ) ;
}

0 个答案:

没有答案