Можно ли из основной программы обратиться к этому значению?
Сергей Борщ
Sep 9 2011, 05:54
CODE
startup.s:
public SW_VER SW_VER EQU 0x01000001
test.c:
extern int SW_VER; void test() { printf("version: %x", SW_VER); }
как-то так. Вы не указали ассемблер, поэтому уточните по его описанию формат директивы public.
aaarrr
Sep 9 2011, 07:59
Под EQU память не выделяется, соответственно, extern int сработать бы не должен. А вот DCD (в т.ч. с инициализацией через EQU) точно можно будет "зацепить" снаружи.
Сергей Борщ
Sep 9 2011, 10:39
QUOTE (aaarrr @ Sep 9 2011, 10:59)
Под EQU память не выделяется, соответственно, extern int сработать бы не должен.
Да, прошляпил это как-то. Тогда так:
CODE
test.c:
extern int SW_VER; void test() { printf("version: %x", (int)&SW_VER); }
yurmala
Sep 12 2011, 05:34
Использую компилятор Keil.
Вариант: test.s
Код
SW_VER EQU 0x02020001 SWVER DCD SW_VER
test.c
Код
extern int SWVER; ... sprintf(s,"version: %x", SWVER);
не компилируется. Ошибка Error: L6218E: Undefined symbol SWVER
p.s. (int)&SWVER тоже пробовал
Rst7
Sep 12 2011, 06:07
QUOTE
Вариант ... не компилируется. Ошибка Error: L6218E: Undefined symbol SWVER
PUBLIC SW_VER кто будет добавлять?
aaarrr
Sep 12 2011, 06:57
В данном случае EXPORT SW_VER.
yurmala
Sep 12 2011, 08:46
Да, уже разобрался сам. Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.