Skip to content

Commit 5f357fd

Browse files
authored
Опечатка в 14 лабораторной (#117)
К прошлым изменениям (Старые названия модулей) забыл добавить, что в Labs/07. Datapath/board files /README.md на рисунке 1 тоже старые названия модулей. В листинге 1 написано:".../* Секция данных размещается аналогично секции инструкций за исключением адреса загрузки в памяти (Load Memory Address, LMA). Поскольку память инструкций и данных физически разделены, у них есть пересекающееся адресное пространство, которое мы бы хотели использовать (поэтому в разделе MEMORY мы указали что стартовые адреса обоих памятей равны нулю). Однако компоновщику это не нравится, ведь как он будет размещать две разные секции в одно и то же место. Поэтому мы ему сообщаем, с помощью оператора "AT", что загружать секцию данных нужно на самом деле не по нулевому адресу, а по какому-то другому, заведомо большему чем размер памяти инструкций, но процессор будет использовать адреса, начинающиеся с нуля. Такой вариант компоновщика устраивает и он собирает исполняемый файл без ошибок. Наша же задача, загрузить итоговую секцию данных по нулевым адресам памяти данных. */ .data : AT (0x00800000) {..."
1 parent 49f3c57 commit 5f357fd

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

Labs/14. Programming/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ _Таблица 1. Ассемблерные мнемоники для целоч
9696

9797
Обычно LMA совпадает с VMA. Однако в некоторых случаях они могут быть и различны (например, изначально секция данных записывается в ROM, а перед выполнением программы, копируется из ROM в RAM). В этом случае, LMA — это адрес секции в ROM, а VMA — адрес секции в RAM.
9898

99-
Таким образом, мы можем сделать общие VMA (процессор, обращаясь к секциям инструкций и данных будет использовать пересекающееся адресное пространство), а конфликт размещения секций компоновщиком разрешить, задав какой-нибудь заведомо большой VMA для секции данных. В последствии, мы просто проигнорируем этот адрес, проинициализировав память данных начиная с нуля.
99+
Таким образом, мы можем сделать общие VMA (процессор, обращаясь к секциям инструкций и данных будет использовать пересекающееся адресное пространство), а конфликт размещения секций компоновщиком разрешить, задав какой-нибудь заведомо большой LMA для секции данных. В последствии, мы просто проигнорируем этот адрес, проинициализировав память данных начиная с нуля.
100100

101101
Помимо прочего, в скрипте компоновщика необходимо прописать, каков [порядок следования байт](https://en.wikipedia.org/wiki/Endianness), где будет находиться стек, и какое будет значение у указателя на глобальную область памяти.
102102

0 commit comments

Comments
 (0)