|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 11:50 am
|
Страница 1 от 1
|
[ 4 мнения ] |
|
Използване на готови дефиниции в асемблерен файл?
| Автор |
Съобщение |
|
xor
Ранг: Новодошъл
Регистриран на: Пет Ное 11, 2005 9:30 am Мнения: 142 Местоположение: София
|
 Използване на готови дефиниции в асемблерен файл?
Средата е CubeIDE. В main.c чрез поредица от инклудвания попада и stm32h723xx.h. В stm32h723xx.h има дефинирано GPIOA_BASE. Естествено в main.c мога да напиша: uint32_t var = GPIOA_BASE;
Имам обаче и interrupt.s където GPIOA_BASE не се вижда! В interrupt.s не мога да напиша: #include stm32h723xx.h защото асемблерът не разбира повечето неща съдържащи се в stm32h723xx.h!
Вариантът с повторно дефиниране в асемблерния файл не ми допада защото: 1. Трябва да напиша отново над 50 дефиниции. 2. Все ми се струва, че има и по-елегантен начин.
Нивото ми е твърде любителско и предполагам, че просто не се досещам за правилното решение...
|
| Съб Мар 21, 2026 5:47 pm |
|
 |
|
vesko_hard
Ранг: Ориентиран
Регистриран на: Сря Фев 08, 2006 3:32 pm Мнения: 253 Местоположение: Благоевград
|
 Re: Използване на готови дефиниции в асемблерен файл?
Chat GPT казва.....
използвай .S вместо .s (най-чистото решение)
Ако преименуваш файла от:
interrupt.s → interrupt.S (главно S!)
той ще мине през C preprocessor, преди да се асемблира.
Тогава вече можеш спокойно:
#include "stm32h723xx.h"
LDR R0, =GPIOA_BASE
✔ Това е най-добрият и препоръчван подход в CubeIDE.
|
| Съб Мар 21, 2026 10:12 pm |
|
 |
|
xor
Ранг: Новодошъл
Регистриран на: Пет Ное 11, 2005 9:30 am Мнения: 142 Местоположение: София
|
 Re: Използване на готови дефиниции в асемблерен файл?
Благодаря! НО: Преди да попитам тук, се допитах до няколко И. интелекта. Този вариант, както и някои други препоръки ги изпробвах, но не работят! Възможно е аз да не правя нещо като хората.
Обобщено: Или дефинициите не се виждат от асемблера, или се виждат, но заедно с тях и много други неразпознаваеми неща за асемблера.
Както и да е. Ще напиша нови в асемблерния файл. Не е болка за умиране. Все пак, ако на някой му хрумне нещо може да сподели...
|
| Нед Мар 22, 2026 12:31 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11265 Местоположение: Добрич
|
 Re: Използване на готови дефиниции в асемблерен файл?
CubeIDE е някаква среда, въпросът е кой е компилаторът? Ако се ползва GCC то това е набор от инструменти - препроцесорът (GNU CPP) е един инструмент, С компилаторът е друг, Ц++ компилаторът е друг, асемблер, линкер и т.н. Всеки инструмент може да се ползва поотделно. Примерно може да правиш препроцесинг на текстови файлове или на Паскал/АДА и т.н. Може да викаш инструментите ръчно, ако искаш. Но обикновено се ползва make и makefile в който има правила кога какво да се вика. Аз сам си правя мейкфайловите и сам си решавам кое как. Някои среди генерират мейкфайлове... Конкретно кюба - нямам идея, ще трябва сам да го разбереш. Ако директно се вика гну-ас-а за асемблерските файлове естествено няма да има препроцесинг. Някой трябва да извика препроцесорът... Може да се извика директно, но обикновено се ползва gcc. Това е така да се каже универсален инструмент. Викаш gcc и то от своя страна вика конкретния компилатор, препроцесор или асемблер. Може да се ориентира по типа на файла. От тук идва и разликата между s и S файловете. За едните ще пусне препроцесинг, за другите не. Но това важи само и единствено ако се вика gcc. Ако си викаш директно препроцесорите и компилаторите и асемблерите, то разширенията на файловете нямат абсолютно никакво значение.
|
| Нед Мар 22, 2026 1:23 pm |
|
|
|
Страница 1 от 1
|
[ 4 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|