реклама на сайте
подробности

 
 
> Использование асмовых вставок в Keil uVision 3, как првильно подключать модули
alvol
сообщение Nov 25 2007, 22:10
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 15-05-06
Из: Николаев
Пользователь №: 17 119



Появилась необходимость сделать асмовую вставку в сишный код.
Для этого предлагается использовать директивы:
#pragma asm
...
#pragma endasm

Когда делаешь что-то подобное в проекте, необходимо в Source Group на файле в опциях указать галочки
Generate Assembler SCR files
Assemble SCR files
тогда начинает компилировать код, но делать вставки в подключаемых файлах через #include не разрешает..
если файл принудительно добавить в проект как файл main.c и указать єти же опции галочками, то
вроде тоже компилирует, но при этом переменные, которые были объявлены в этом файле не видны в других инклудах, как это было раньше

Расскажите ненмого подробней, как правильно делать асмовые вставки, чтоб их можно было компилировать в любом файле или же как правильно подключать модули, чтоб можно было корректно дергать из них функции и переменные и использовать в других модулях. Насколько я понял функции в других инклудах можно использовать если описать их прототип в файле, где и собираюсь использовать, но как быть с перменными? Их так просто использовать не хочет, если они описаны в файлах, добавленных к Source Group. Писать все в одном файле не хочется.

Каждый подключаемый файл описываю в виде:

// FILE.C --имя файла
// тут описываю прототипы функций из других модулей
void XXX();

//*****************************************************************************

#ifndef FILEС
#define FILEС

#include "main.h"
#include "ХХХХ.c" // для использования функций из других модулей

.....
#endif


Как должно быть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Nov 26 2007, 03:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



В подавляющем количестве случаев нет особой необходимости в асмовых вставках. Если у вас есть критические по времени выполнения функции пишите их полностью на асм. Как вызывать асм-овые функции из си-шных и наоборот читайте в User's Manual, он у Keil довольно неплохой.
http://www.keil.com/support/man/docs/c51/c51_ap_ctoasm.htm
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 04:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016