[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: RD3AVJ 
Форум » форумы » Общие вопросы по Bascom-AVR » $hwstack, $swstack, $framesize (Что и для чего это???)
$hwstack, $swstack, $framesize
spaceДата: Понедельник, 14.01.2013, 00:36 | Сообщение # 1
Группа: Проверенные
Сообщений: 42

Статус: Offline
Что это такое? Для чего? На основе чего ставятся те или иные цифры?
Код
$hwstack = 8
$swstack = 16
$framesize = 16


 
exersizzeДата: Понедельник, 14.01.2013, 01:32 | Сообщение # 2
Группа: Администраторы
Сообщений: 719

Статус: Offline
Это распределение пространства статической памяти (SRAM) под нужды программы в байтах, так называемый стэк.
hwstack - аппаратный стек, он необходим контроллеру чтобы записывать в него адреса того места, откуда прыгнула программа на подпрограмму или функцию. Если проще то так, камень выполняет программу и тут ему нужно уйти на выполнение какой-то подпрограммы (например прерывание), вот чтобы знать куда возвращаться после того как подпрограмма отработана, необходимо место чтобы сохранить этот адрес. При использовании в программе одного Gosub необходимо место в 2 байта.
swstack - программный стэк. Практически тоже самое, но хранит переменные (вернее их адреса) чтобы не потерять их после ухода на подпрограмму. Для хранения каждого адреса переменной тоже нужно резервировать по 2 байта.
framesize - это размер выделяемой памяти для преобразований строк, их форматирования, подготовку вывода на дисплей по команде LCD или PRINT/INPUT. В общем та область памяти куда буферизируются переменные для последующей обработки.

Как то так, вот хорошая ссылка по этой теме http://www.mcselec.com/index.p....emid=57 с картинками и примерами. Только там все на вражеском языке, неплохо бы если кто-то занялся переводом.


 
spaceДата: Вторник, 15.01.2013, 02:11 | Сообщение # 3
Группа: Проверенные
Сообщений: 42

Статус: Offline
exersizze, спасибо
если бы знал английский перевел бы) и не спрашивал об этом

И еще вопросик, если в программе не вписывать стэки вообще, то как может повлиять на работу программы при наличие всяких переменных, переходов и т.д.?


 
kip96Дата: Вторник, 15.01.2013, 12:16 | Сообщение # 4
Группа: Свой человек
Сообщений: 167

Статус: Offline
Они автоматически пропишутся, те которые стоят в настройках компилятора.

 
exersizzeДата: Среда, 16.01.2013, 03:00 | Сообщение # 5
Группа: Администраторы
Сообщений: 719

Статус: Offline
Если стэка не хватает, то программа будет работать неккоректно. Лично сталкавался с тем что переменные  обнулялись после того как проделывал сложные операции в подпрограммах.

 
KoSS_89Дата: Среда, 16.01.2013, 22:43 | Сообщение # 6
Группа: Проверенные
Сообщений: 53

Статус: Offline
Спасибо за разъяснение, давно хотел разобратся.

 
SandorДата: Четверг, 15.08.2013, 01:50 | Сообщение # 7
Группа: Пользователи
Сообщений: 11

Статус: Offline
Спасибо.

 
KoSS_89Дата: Четверг, 15.08.2013, 17:29 | Сообщение # 8
Группа: Проверенные
Сообщений: 53

Статус: Offline
А вобще здесь http://bascom.at.ua/load....-1-0-46 целая статья на русском про эти стеки, только нужно зарегестрироваться!

 
exersizzeДата: Пятница, 05.09.2014, 17:51 | Сообщение # 9
Группа: Администраторы
Сообщений: 719

Статус: Offline
Комментарий к этому "переведу" улыбнул)


 
RD3AVJДата: Суббота, 06.09.2014, 20:22 | Сообщение # 10
Группа: Модераторы
Сообщений: 175

Статус: Offline
biggrin

 
Форум » форумы » Общие вопросы по Bascom-AVR » $hwstack, $swstack, $framesize (Что и для чего это???)
Страница 1 из 11
Поиск: