Перейти к содержанию
    

IAR и RSTACK/CSTACK

Доброе время суток всем.

 

Решил попробовать IAR для меги и возник вопрос: для чего компилятор заводит второй стек (CSTACK) для хранения данных? Чем ему аппаратный не нравится? Имхо такой подход менее прозрачный, а значит, более подвержен ошибкам как со стороны разработчиков самого компилятора, так и со стороны пользователей оного при написании асмовых вставок. Кроме того, постоянно занята регистровая пара Y, в скорости работы приварка нет, да и 2 раздельных области памяти всегда больше скушают, чем одна общая. Я конечно понимаю, что разработчики компилятора совсем не дураки и сделано это с определенной целью, но с какой??? :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это сделано ввиду отсутствия у штатного указателя стека продвинутых методов адресации (автоинкремент, автодекремент, указание со смещением), которые есть у регистра Y.

Т. к. через стек происходит передача параметров функциям и на нём же организовываются автоматические переменные, то такие методы адресации просто необходимы.

Можно было обойтись и одним указателем, но при входе в функцию его всё равно пришлось бы перегружать в Y или другую пару (экономии, как видите, нет), да и быстродействие при этом гробилось бы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это сделано ввиду отсутствия у штатного указателя стека продвинутых методов адресации (автоинкремент, автодекремент, указание со смещением), которые есть у регистра Y.

Т. к. через стек происходит передача параметров функциям и на нём же организовываются автоматические переменные, то такие методы адресации просто необходимы.

Можно было обойтись и одним указателем, но при входе в функцию его всё равно пришлось бы перегружать в Y или другую пару (экономии, как видите, нет), да и быстродействие при этом гробилось бы.

 

Спасибо большое :cheers:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...