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

 
 
> Использование асмовых вставок в 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
Ответов
repairDV
сообщение Nov 26 2007, 12:30
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



В этом разделе 51 уже есть ответ на этот вопрос. Пролистайте все страницы. Там всё конкретно расписано: соответствующие коды в Си и Асм.

http://electronix.ru/forum/index.php?showtopic=29192


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post
alvol
сообщение Nov 26 2007, 14:29
Сообщение #3


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

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



Цитата(repairDV @ Nov 26 2007, 14:30) *
В этом разделе 51 уже есть ответ на этот вопрос. Пролистайте все страницы. Там всё конкретно расписано: соответствующие коды в Си и Асм.

http://electronix.ru/forum/index.php?showtopic=29192

спасибо
меня все же интересует как использовать вставку "на лету", нежели заранее описанные функции, т.е. выполнить только отдельные операции на асме, вместо СИшного синтаксиса
Go to the top of the page
 
+Quote Post
repairDV
сообщение Nov 27 2007, 07:10
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



Цитата(alvol @ Nov 27 2007, 00:29) *
меня все же интересует как использовать вставку "на лету", нежели заранее описанные функции, т.е. выполнить только отдельные операции на асме, вместо СИшного синтаксиса

Такое есть только в Мотороловском CodeWarrior.
int main(void)
{
Y=a/b;
asm (inc Y);
}

Сообщение отредактировал repairDV - Nov 27 2007, 07:14


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post



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

 


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


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