[an error occurred while processing this directive]
64-х битные указатели в TMS55xx
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено andres 22 июня 2004 г. 17:55

Нужно работать с 64-х битными указателями с использованием более чем 16 младших бит. Написан тест. Модель памяти - большая.
-----------------------------------
unsigned int *pMeme;
unsigned long int ilf;
unsigned int i;

int test(void)
{
ilf = 0x16756;
pMeme = (unsigned int *) 0x100;
i = *(pMeme + (long int)ilf);
}
--------------------------------
Указатели действительно получились 64-х битными. однако приведенный ниже тест показал, что данные беруться из обрезанного до 16-и бит указателя. С точки зрения ассемблера все логично - относительная адрессация, pMeme загоняется в XARx, смещение - в Tx, и обрезание получено. Если сначала получить long переменную, потом ее преобразовать в указатель - вот тогда все oK. Но ведь не должно же так быть. Конечно, можно сделать вставку на ассемблере, но ведь это же не совсем правильно (с точки зрения логики).

Андрей

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru