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"
|
||||
*/
|
||||
|
||||
_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; /* Размер стека обработчика перехватов.
|
||||
|
Reference in New Issue
Block a user