Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR и RSTACK/CSTACK
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
gladov
Доброе время суток всем.

Решил попробовать IAR для меги и возник вопрос: для чего компилятор заводит второй стек (CSTACK) для хранения данных? Чем ему аппаратный не нравится? Имхо такой подход менее прозрачный, а значит, более подвержен ошибкам как со стороны разработчиков самого компилятора, так и со стороны пользователей оного при написании асмовых вставок. Кроме того, постоянно занята регистровая пара Y, в скорости работы приварка нет, да и 2 раздельных области памяти всегда больше скушают, чем одна общая. Я конечно понимаю, что разработчики компилятора совсем не дураки и сделано это с определенной целью, но с какой??? blink.gif
IgorKossak
Это сделано ввиду отсутствия у штатного указателя стека продвинутых методов адресации (автоинкремент, автодекремент, указание со смещением), которые есть у регистра Y.
Т. к. через стек происходит передача параметров функциям и на нём же организовываются автоматические переменные, то такие методы адресации просто необходимы.
Можно было обойтись и одним указателем, но при входе в функцию его всё равно пришлось бы перегружать в Y или другую пару (экономии, как видите, нет), да и быстродействие при этом гробилось бы.
gladov
Цитата(IgorKossak @ Oct 27 2006, 20:01) *
Это сделано ввиду отсутствия у штатного указателя стека продвинутых методов адресации (автоинкремент, автодекремент, указание со смещением), которые есть у регистра Y.
Т. к. через стек происходит передача параметров функциям и на нём же организовываются автоматические переменные, то такие методы адресации просто необходимы.
Можно было обойтись и одним указателем, но при входе в функцию его всё равно пришлось бы перегружать в Y или другую пару (экономии, как видите, нет), да и быстродействие при этом гробилось бы.


Спасибо большое cheers.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.