我正在使用没有libc的裸机工具链开发cortex-m3板子。
我实现了一个逐字节复制数据的memcpy函数,但速度太慢。在GCC手册中,它提供了__builtin_memcpy,我决定使用它来改进memcpy函数。这是使用__builtin_memcpy的实现代码:
#include <stddef.h>
void *memcpy(void *dest, const void *src, size_t n)
{
return __builtin_memcpy(dest,src,n);
}
当我编译这段代码时,它变成了一个永远不会结束的递归函数。
$ arm-none-eabi-gcc -march=armv7-m -mcpu=cortex-m3 -mtune=cortex-m3 \
-O2 -ffreestanding -c memcpy.c -o memcpy.o
$ arm-none-eabi-objdump -d memcpy.o
memcpy.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <memcpy>:
0: f7ff bffe b.w 0 <memcpy>
我错在哪里?如何使用编译器生成的memcpy版本?