/********************************************\
|????歡迎轉載, 但請保留作者姓名和原文鏈接, 祝您進步并共勉!???? |
\********************************************/
常用C函的匯編實現(注: AT&T匯編)
作者: Jerry Cat
時間: 2006/06/07
鏈接:?http://www.shnenglu.com/jerysun0818/archive/2006/06/07/8253.html
//字符串拷貝
void strcpy(const char *src, char *dest)
{
?????? char ch;
?????? __asm
?????? {
???????? loop:
????????????? ldrb?????? ch, [src], #1
????????????? strb?????? ch, [dest], #1
????????????? cmp??????? ch, #0
????????????? bne???????? loop
?????? }
}
//int轉字符串
void I2S(int isource, char* desstr)
{
?char ch, i=sizeof(isource)*2, temp = 0, is =0;
?if(isource==0)
?{
??*desstr = '0';
??*(desstr+1)=0;
??return;
?}
?if(isource<0)
?{
??*desstr='-';
??desstr++;
??isource=-isource;
?}
?desstr--;
?__asm
?{
?loop:
??mov ch, #'0'
??add ch, ch, isource, lsr#28
??mov isource, isource, lsl#4
??sub temp,ch, #'0'
??orr is, temp, is
??cmp is, #0
??beq loop1
??mov is, #0xFF
??strb ch, [desstr,#1]!
?loop1:
??sub i, i, #1
??cmp i, #0
??bne loop
?}
?
?*(++desstr) = 0;
}
posted on 2006-06-07 18:11
Jerry Cat 閱讀(573)
評論(0) 編輯 收藏 引用