Помощь
-
Поиск
-
Пользователи
-
Календарь
Полная версия этой страницы:
Доступ к глобальным переменным из асм-функции
Форум разработчиков электроники ELECTRONIX.ru
>
Микроконтроллеры (MCs)
>
Cредства разработки для МК
>
GNU/OpenSource средства разработки
Trizna
Dec 1 2010, 10:23
Подскажите, как в ассемблерной функции использовать переменную объявленную в "С" части программы ?
Например имеем код:
CODE
char table[100]
main
{
GET_TABLE_ELEMENT_ASM (char number)
}
Как в ассемблерной функции GET_TABLE_ELEMENT_ASM получить указатель на table ?
_Pasha
Dec 1 2010, 11:22
для какого проца?
Trizna
Dec 1 2010, 11:54
Цитата(_Pasha @ Dec 1 2010, 14:22)
для какого проца?
ARM
alex_os
Dec 1 2010, 12:20
Цитата(Trizna @ Dec 1 2010, 13:23)
Подскажите, как в ассемблерной функции использовать переменную объявленную в "С" части программы ?
Например имеем код:
CODE
char table[100]
main
{
GET_TABLE_ELEMENT_ASM (char number)
}
Как в ассемблерной функции GET_TABLE_ELEMENT_ASM получить указатель на table ?
В r0 будет лежать указатель.
Гуглить "gccarm calling convention".
ARV
Dec 1 2010, 12:36
а разве в ассемблерном файле нельзя указать
extern char table[]
и пускай линкер сам адреса подставляет?
_Pasha
Dec 1 2010, 12:39
Цитата(ARV @ Dec 1 2010, 16:36)
а разве в ассемблерном файле нельзя указать
extern char table[]
и пускай линкер сам адреса подставляет?
Код
.extern table
Кстати, r0 будет содержать номер элемента массива а не ссылку на элемент
Trizna
Dec 1 2010, 13:47
Цитата(_Pasha @ Dec 1 2010, 16:39)
Код
.extern table
Я собственно так и делал, но не смог потом символ table использовать
конструкции
mov r3, table;
mov r3, #table;
компилятор не компилирует
Цитата(_Pasha @ Dec 1 2010, 16:39)
Кстати, r0 будет содержать номер элемента массива а не ссылку на элемент
С этим всё ясно...
Trizna
Dec 2 2010, 03:43
разобрался!
делать нужно
ldr r3, =table
причем table не обязательно объявлять как extern, ассемблер все незнакомые символы считает внешними по умолчанию
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке
.
Invision Power Board © 2001-2025
Invision Power Services, Inc.