- 简单的实现将一个字符串复制到另外一个字符数组中。拷贝功能在ARM中实现。C语言调用汇编实现。C语言代码:主要注意要将汇编中的函数导入进来。其余很简单!我这样赋值方便以后调试的时侯方便。
- #include <stdio.h>
- extern void strcopy(char *d, const char *s);
- int main(int argc, char *argv[])
- {
- const char *srcstr="abcdefghi";
- char dststr[]="ighfedcba";
- strcopy(dststr,srcstr);
- return 0;
- }
ARM汇编代码:在此汇编代码中,主要是注意将拷贝函数导出,将C语言main函数导入,注意在调试的时候你会发现,R0,R1寄存器存储的是两个传入参数的存储地址,所以后期通过LDR和STR即可实现,主要是要不断的调试你就会熟悉这个参数是怎么传入的,还有就是注意通过寻址观察目标字符数组的变化,是否复制成功。
- STACK_TOP EQU 0x40002000
- PRESERVE8
- AREA SCopy, CODE, READONLY
- EXPORT START
- EXPORT strcopy
- import main
- ENTRY
- START
- LDR R13,=STACK_TOP
- B main
- strcopy
- LDRB r2, [r1],#1
- STRB r2, [r0],#1
- CMP r2, #0
- BNE strcopy
- MOV pc,lr
- END
- referential from http://blog.csdn.net/z_monkey/article/details/8228003
本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/1078080,如需转载请自行联系原作者