我正在使用沒有libc的裸機工具鏈的cortex-m3板。在手臂中使用GCC的內置函數
我實現了memcpy,它將byte-to-byte數據拷貝過來,但速度太慢。在GCC手冊中,它說它提供__builtin_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版本?不應該
兩年前問了這個問題,已經有了答案。請儘量不要帶回這些類型的問題。 – Mic1780 2014-08-06 22:57:03