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

 
 
 
Reply to this topicStart new topic
> Как задействовать метку из asm файла в С?, Компилятор Keil RealView
sonycman
сообщение Feb 12 2007, 20:23
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Никак не могу разобраться с меткой-указателем... sad.gif
Ситуация такая: проект содержит исходники как на асме, так и на С.
Есть фрагмент исходника на асме:
Код
                AREA    data, DATA, READONLY, ALIGN=2
                EXPORT    font_arial10
font_arial10            
                INCBIN    Fonts\Arial7(10).bin

хочу использовать метку font_arial10 в исходнике на С, в виде указателя на данные (шрифт):
Код
    extern dword font_arial10;
    word    *pPointer;
    word    data;

    pPointer    =    (word*)font_arial10;
    data    =    *pPointer;

но после компиляции в программе в указатель pPointer грузится не адрес, по которому находится шрифт, а данные, которые находятся по адресу [font_arial10], соответственно последующее чтение указателя вызывает data abort...
Уже упарился, подскажите, пожалуйста, как заставить компилятор задействовать указатель?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 12 2007, 20:32
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Код
    extern dword font_arial10;
    word    *pPointer;
    pPointer    =    (word*)&font_arial10;
    data    =    *pPointer;


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 12 2007, 20:34
Сообщение #3


Гуру
******

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



В вашем выражении значение метки является указателем на данные, а не значением собственно указателя. По-моему нужно все-таки так

Код
pPointer    =    (word *)&font_arial10;
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 12 2007, 21:30
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



попробуйте так:

extern word font_arial10[];

data = *font_arial10;
Go to the top of the page
 
+Quote Post
sonycman
сообщение Feb 12 2007, 21:59
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Сергей Борщ @ Feb 12 2007, 21:32) *
Код
    extern dword font_arial10;
    word    *pPointer;
    pPointer    =    (word*)&font_arial10;
    data    =    *pPointer;

Цитата(rezident @ Feb 12 2007, 21:34) *
В вашем выражении значение метки является указателем на данные, а не значением собственно указателя. По-моему нужно все-таки так

Код
pPointer    =    (word *)&font_arial10;

Цитата(defunct @ Feb 12 2007, 22:30) *
попробуйте так:

extern word font_arial10[];

data = *font_arial10;

Спасибо всем большое! Работает w00t.gif

ЗЫ: до последнего варианта сам всё-таки допёр... blush.gif
Go to the top of the page
 
+Quote Post

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

 


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


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