ЛР13. Обновление скрипта компоновщика

Ранее, чтобы секция данных начиналась с адресов, кратных размеру
памяти данных (поскольку при обращении к ячейкам памяти данных мы
отбрасываем старшие биты адреса) в скрипте компоновщика размер секции
.text приравнивался размеру памяти данных, что сбивает с толку.

Вместо этого добавлен тернарный оператор для выбора подходящего
стартового адреса.

Кроме того, добавлена проверка того, что размер памяти инструкций и
данных является степенью двойки.
This commit is contained in:
Andrei Solodovnikov
2024-01-23 14:17:14 +03:00
parent 48aaeab31a
commit ab21e222e4

View File

@@ -5,10 +5,18 @@ ENTRY(_start) /* мы сообщаем компоно
находится у метки "start"
*/
_text_size = 0x4000; /* Размер памяти инстр.: 16KiB */
_data_base_addr = _text_size; /* Стартовый адрес секции данных */
_text_size = 0x1000; /* Размер памяти инстр.: 4KiB */
_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;
_trap_stack_size = 2560; /* Размер стека обработчика перехватов.