ОЗУ в STM32

Кто любит RISC в жизни, заходим, не стесняемся.
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: ОЗУ в STM32

Сообщение tonyk »

alex1126 писал(а):где это независимые и равноправные функции?
А что значит "равноправные"? Одна вырождается в другую:

Код: Выделить всё

void *
realloc(void *ptr, size_t len)
{
	struct __freelist *fp1, *fp2, *fp3, *ofp3;
	char *cp, *cp1;
	void *memp;
	size_t s, incr;
	/* Trivial case, required by C standard. */
	if (ptr == 0)
		return malloc(len);
.....
alex1126
Вымогатель припоя
Сообщения: 567
Зарегистрирован: Ср дек 19, 2012 12:16:22

Re: ОЗУ в STM32

Сообщение alex1126 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4371584#p4371584"]В IAR realloc без вызова malloc умеет обходиться.[/uquote]
ну ок, пусть обходится.

А если уж тут собрались такие специалисты по памяти, обьясните мне, почему при вызове функции не один раз а несколько, используемый размер стека увеличивается?

Код: Выделить всё

int main(void) {

int i,
char c;

....

fun(&i, &c);
fun(&i, &c);

....
fun(&i, &c);
...
}


Вот пример. Я считал что когда вызывается функция, текущие локальные переменные сохраняются в стеке (ну еще там какая то информация о соостоянии), в вызванной функции происходит еще увеличение используемого стека на локальные переменные этой функции, а после выхода из функции, размер используемого стека возвращается к размеру который был до вызова функции.

Но в примере выше, keil после компиляции показывает что максимальный размер стека увеличился на 8 байт по сравнению с вариантом когда в начале функция fun() не вызывается дважды. Или это попытки компилятора чего там наоптимизировать?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: ОЗУ в STM32

Сообщение VladislavS »

Предлагаю для начала ознакомиться с ARM ABI и после посмотреть как это работает под отладчиком на разных уровнях оптимизации.
alex1126
Вымогатель припоя
Сообщения: 567
Зарегистрирован: Ср дек 19, 2012 12:16:22

Re: ОЗУ в STM32

Сообщение alex1126 »

за ссылку спасибо, а на вопрос то можете ответить?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: ОЗУ в STM32

Сообщение VladislavS »

У меня нет хрустального шара, чтобы гадать что там за функции. Но чуть выше я писал, что переменные могут и в РОН располагаться. Добавили кода и они в стек переехали. И потом, ARM Compiler V6 очень агрессивный в оптимизации - код в "лапшу режет". Поэтому, совет посмотреть под отладкой что там да как повторю в очередной раз.
Ответить

Вернуться в «ARM»