ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
7 мая
870009 Топик полностью
misyachniy (09.09.2018 22:14, просмотров: 139) ответил VLLV на но вопрос то был не про передачу, ну перечитайте же
До 4 переменных разместит в R0..R3. Остальные в стек. Если есть еще и внутренние переменные, используемые одновременно с параметрами, то их тоже может положить в стек. Но в любом случае R0..R3 каждая функция использует по "своему разумению". Если переменная на определенном не используется, то на ее место сразу записывается новая или промежуточное вычисленное значение. Пример приведенный выше: int foo( int a ) { int b = a+1; int c = b*2; int d = c-3; return d*d; } Явно видно, что после каждого действия исходная/вычисленная переменная не нужна и на ее место пишется новый результат. Размер стека используемого функцией зависит не только от числа входных/промежуточных переменных, но и настроек компилятора. Для увеличения быстродействия регистры от R4 и выше могут быть сохранены в стеке. А сами регистры использованы для счетчика цикла(ов), констант и т.д. По моему, в IAR ARM есть примочка для слежения за стеком. Я как-то ловил выход указателя за массив, и помниться для слежения за стеком тоже был предусмотрен механизм. Накладные расходы довольно небольшие. P.S. В любом случае, чтение документации не сильно вредит здоровью.