mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 09:40:10 +00:00
ЛР13. Обновление скрипта компоновщика
Ранее, чтобы секция данных начиналась с адресов, кратных размеру памяти данных (поскольку при обращении к ячейкам памяти данных мы отбрасываем старшие биты адреса) в скрипте компоновщика размер секции .text приравнивался размеру памяти данных, что сбивает с толку. Вместо этого добавлен тернарный оператор для выбора подходящего стартового адреса. Кроме того, добавлена проверка того, что размер памяти инструкций и данных является степенью двойки.
This commit is contained in:
@@ -5,10 +5,18 @@ ENTRY(_start) /* мы сообщаем компоно
|
|||||||
находится у метки "start"
|
находится у метки "start"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
_text_size = 0x4000; /* Размер памяти инстр.: 16KiB */
|
_text_size = 0x1000; /* Размер памяти инстр.: 4KiB */
|
||||||
_data_base_addr = _text_size; /* Стартовый адрес секции данных */
|
|
||||||
_data_size = 0x4000; /* Размер памяти данных: 16KiB */
|
_data_size = 0x4000; /* Размер памяти данных: 16KiB */
|
||||||
|
|
||||||
|
ASSERT(!(_text_size & (_text_size-1)), /* Проверка что размеры памяти */
|
||||||
|
"Instr mem size is not power of 2") /* являются степенью двойки */
|
||||||
|
ASSERT(!(_data_size & (_data_size-1)),
|
||||||
|
"Data mem size is not power of 2")
|
||||||
|
|
||||||
|
_data_base_addr = _text_size >= _data_size ? /* Стартовый адрес секции данных */
|
||||||
|
_text_size : _data_size; /* указан как больший из размеров*/
|
||||||
|
/* секции инструкций/данных */
|
||||||
|
|
||||||
_data_end = _data_base_addr + _data_size;
|
_data_end = _data_base_addr + _data_size;
|
||||||
|
|
||||||
_trap_stack_size = 2560; /* Размер стека обработчика перехватов.
|
_trap_stack_size = 2560; /* Размер стека обработчика перехватов.
|
||||||
|
Reference in New Issue
Block a user