fazendo sua própria função malloc em C
Eu preciso da sua ajuda nisso. Eu tenho um conhecimento médio de C e aqui está o problema. Estou prestes a usar alguns benchmarks para testar algumas coisas de arquitetura de computadores (erros de ramificação, erros de cache) em um novo processador. O importante é que os benchmarks estão em C, mas não devo incluir nenhuma chamada de biblioteca. Por exemplo, não posso usar malloc porque estou recebendo o erro
"undefined reference to malloc"
mesmo que eu tenha incluído a biblioteca. Então eu tenho que escrever meu próprio malloc. Eu não quero que seja super eficiente - apenas faça o básico. Como estou pensando, devo ter um endereço na memória e toda vez que um malloc acontece, eu retorno um ponteiro para aquele endereço e incremento o contador por esse tamanho. Malloc acontece duas vezes no meu programa, então eu nem preciso de muita memória.
Você pode me ajudar nisso? Eu projetei um Verilog e não tenho muita experiência em C.
Eu já vi respostas anteriores, mas todas parecem muito complicadas para mim. Além disso, não tenho acesso ao livro do K-R.
Felicidades!
EDIT: talvez isso possa ajudá-lo mais: Eu não estou usando o gcc, mas o compilador sde-gcc. Isso faz alguma diferença? Talvez seja por isso que estou recebendo uma referência indefinida ao malloc?
EDIT2: Estou testando uma arquitetura MIPS:
Eu incluí:
#include <stdlib.h>
e os erros são:
undefined reference to malloc
relocation truncated to fit: R_MIPS_26 against malloc
e o id do comando do compilador:
test.o: test.c cap.h
sde-gcc -c -o test.s test.c -EB -march=mips64 -mabi=64 -G -O -ggdb -O2 -S
sde-as -o test.o test.s EB -march=mips64 -mabi=64 -G -O -ggdb
as_objects:=test.o init.o
EDIT 3: ok, eu usei a implementação acima e é executado sem problemas. O problema é que ao fazer a programação embarcada, você só precisa definir tudo o que está usando, então eu defini meu próprio malloc. O sde-gcc não reconheceu a função malloc.