GCC asm функция с ассемблерным кодом "heapend" - PullRequest
0 голосов
/ 21 января 2011

Как указано в заголовке, в отношении кода сборки, я получаю "неопределенную ссылку", когда я связываю свою программу.Но heapend - это правильный код сборки, поэтому я получаю сообщение об ошибке.Кстати, я использую gcc.

asm( "heapend" )

Кстати, я хочу рассчитать размер используемой кучи моей программы.Например,

unsigned int heapsize = asm( /*address of end of the head*/ ) - asm( /*address of end of app*/ );

Обратите внимание, что функция asm должна возвращать адрес.

Пожалуйста, совет.

Большое спасибо.

1 Ответ

0 голосов
/ 31 июля 2012

Невозможно выразить только части инструкции в asm.Вы должны либо написать его полностью на C, что-то вроде:

extern char heapstart;
extern char heapend;
unsigned int heapsize = &heapend - &heapstart;

, либо завершить сборку:

mov [heapsize],heapend-heapstart
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...