ЛР14. Уточнение комментариев

This commit is contained in:
Andrei Solodovnikov
2025-01-10 18:01:44 +03:00
committed by GitHub
parent dbaac864d2
commit 9e95dfc861

View File

@@ -496,7 +496,7 @@ _Листинг 2. Пример содержимого файла первичн
Исполняемый файл компилятора тот же самый, флаги компоновки будут следующие:
- `-march=rv32i_zicsr -mabi=ilp32` — те же самые флаги, что были при компиляции (нам все ещё нужно указывать архитектуру, иначе компоновщик может скомпоновать объектные файлы со стандартными библиотеками от другой архитектуры)
- `-Wl,--gc-sections` — указать компоновщику удалять неиспользуемые секции (сокращает объем итогового файла)
- `-Wl,--gc-sections` — указать компоновщику удалять неиспользуемые секции (сокращает объем итогового файла). Обратите внимание, что **после запятой не должно быть пробела** — это важно!
- `-nostartfiles` — указать компоновщику не использовать стартап-файлы стандартных библиотек (сокращает объем файла и устраняет ошибки компиляции из-за конфликтов с используемым стартап-файлом).
- `-T linker_script.ld` — передать компоновщику скрипт компоновки
@@ -739,7 +739,7 @@ _Листинг 4. Пример кода на C++, взаимодействую
5. [Скомпилируйте](#практика) программу и [стартап-файл](startup.S) в объектные файлы.
6. Скомпонуйте объектные файлы исполняемый файл, передав компоновщику соответствующий [скрипт](linker_script.ld).
7. Экспортируйте из объектного файла секции `.text` и `.data` в текстовые файлы `init_instr.mem`, `init_data.mem`. Если вы не создавали инициализированных статических массивов или глобальных переменных, то файл `init_data.mem` может быть оказаться пустым.
1. Если файл `init_data.mem` не пустой, необходимо проинициализировать память в модуле `ext_mem` c помощью системной функции `$readmemh` как это было сделано для памяти инструкций.
1. Если файл `init_data.mem` не пустой, необходимо проинициализировать память в модуле `data_mem` c помощью системной функции `$readmemh` как это было сделано для памяти инструкций.
2. Перед этим из файла `init_data.mem` необходимо удалить первую строку (вида `@20000000`), указывающую начальный адрес инициализации.
8. Добавьте получившиеся текстовые файлы в проект Vivado.
9. Запустите моделирование исполнения программы вашим процессором с помощью тестбенча из ЛР№13.