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

 
 
> Assembler в CrossWorks 1.5, Как вставить функции, написанные на ассемблере в код C.
SimpleSoft
сообщение Jan 26 2006, 11:52
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 273
Регистрация: 3-11-05
Пользователь №: 10 442



День добрый.
Столкнулся с проблемой, связанную с тем, что надо написать процедуры на ассемблере, которые в свою очередь надо вызывать из С кода.
Как не бился, не видит функции написанные на ASM.
Делал так:

asm.s :

.extern InitRoutine
.extern DoneRoutine

InitRoutine:
mov R12, PC
stdbm SP!, {R12, LR}
...
...

DoneRoutine:
mov R12, PC
...


Затем в asm.h
extern int InitRoutine(int param1, int param2);
extern int DoneRoutine(int param1, int param2);

А в основной программе делаю:

#include "asm.h"

int main(void)
{
InitRoutine(1,2);
....
DoneRoutine(3,4);
....
}

Линкер выдает ошибку:
undefined reference to `InitRoutine()'

Как можно заставить увидеть мою функцию?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andy Mozzhevilov
сообщение Jan 26 2006, 11:59
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(SimpleSoft @ Jan 26 2006, 16:52) *
День добрый.
Столкнулся с проблемой, связанную с тем, что надо написать процедуры на ассемблере, которые в свою очередь надо вызывать из С кода.
Как не бился, не видит функции написанные на ASM.
Делал так:

asm.s :

.extern InitRoutine
.extern DoneRoutine


а asm их нужно объявить как public

public InitRoutine
public DoneRoutine


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post



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

 


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


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