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

Окно компиляции CodeVision

Всем привет!

 

Внизу приведен фрагмент содержимого окна, которое выдает CodeVision после компилляции программы.

Непонятна строка "Hardware Stack area" это что за стек такой???

Судя по размеру, это остаток ОЗУ, но почему его так странно назвали?

 

1129 line(s) compiled

No errors

No warnings

 

Bit variables size: 0 byte(s)

 

Data Stack area: 60h to AFh

Data Stack size: 80 byte(s)

Estimated Data Stack usage: 43 byte(s)

 

Global variables area: B0h to 315h

Global variables size: 614 byte(s)

 

Hardware Stack area: 316h to 45Fh

Hardware Stack size: 330 byte(s)

 

EEPROM usage: 0 byte(s) (0,0% of EEPROM)

Program size: 1915 words (46,8% of FLASH)

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


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

Всем привет!

 

Внизу приведен фрагмент содержимого окна, которое выдает CodeVision после компилляции программы.

Непонятна строка "Hardware Stack area" это что за стек такой???

Судя по размеру, это остаток ОЗУ, но почему его так странно назвали?

 

1129 line(s) compiled

No errors

No warnings

 

Bit variables size: 0 byte(s)

 

Data Stack area: 60h to AFh

Data Stack size: 80 byte(s)

Estimated Data Stack usage: 43 byte(s)

 

Global variables area: B0h to 315h

Global variables size: 614 byte(s)

 

Hardware Stack area: 316h to 45Fh

Hardware Stack size: 330 byte(s)

 

EEPROM usage: 0 byte(s) (0,0% of EEPROM)

Program size: 1915 words (46,8% of FLASH)

 

У АВР есть т.н. Hardware Stack в котором сохраняются адреса возвратов, и переменные помещаемые туда командой PUSH. Вершиину стека адресует SP, который необходимо проинициализировать при старте программы. Т.о. адресное пространство между верхушкой памяти(обычно CV инициализирует SP=SRAM_END) и последней глабальной переменной и есть Hardware Stack area.

А вобще в хелпе CV данный момент подробно расписан-SRAM Memory Organization.

 

The Data Stack area is used to dynamically store local variables, passing function parameters and saving registers R0, R1, R15, R22, R23, R24, R25, R26, R27, R30, R31 and SREG during interrupt routine servicing.

The Data Stack Pointer is implemented using the Y register.

 

The Hardware Stack area is used for storing the functions return addresses.

The SP register is used as a stack pointer and is initialized at start-up with value of of the _HEAP_START_ -1 address.

During the program execution the Hardware Stack grows downwards to the Global Variables area.

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


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

The Data Stack area is used to dynamically store local variables, passing function parameters and saving registers R0, R1, R15, R22, R23, R24, R25, R26, R27, R30, R31 and SREG during interrupt routine servicing.

The Data Stack Pointer is implemented using the Y register.

 

The Hardware Stack area is used for storing the functions return addresses.

The SP register is used as a stack pointer and is initialized at start-up with value of of the _HEAP_START_ -1 address.

During the program execution the Hardware Stack grows downwards to the Global Variables area.

 

Ну накрутили... Это что-ж получается, два стек-пойнтера надо? Один для Data stck, другой для Hardware stack? И два типа "Пушов" и "Попов" тоже. Короче, пошел читать Manual внимательнее, издеваются над программерами :blink: .

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


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

Ну накрутили... Это что-ж получается, два стек-пойнтера надо? Один для Data stck, другой для Hardware stack? И два типа "Пушов" и "Попов" тоже. Короче, пошел читать Manual внимательнее, издеваются над программерами :blink: .

Вся проблема в том, что у AVR нет стековой адресации и, стало быть, доступ к данным в стеке затруднен. Использование Y-регистра (не X или Z, заметьте) выглядит очень логично. Опять же разделение стековой памяти на стек возвратов и стек данных дает определенную свободу программисту и облегчает выяснение причин неккоректности работы программ, особенно в тех случаях, когда стековая память используется интенсивно.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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