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

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

Отправлено MemoryTest 24 сентября 2002 г. 15:41

Написал простенькую программу на С, котороя берет значение синуса из look up table ( SINE ) и присвайвает его переменной (out):

//----------------------------------------
//---------
// файл sine.c


#include

int out;
extern int SINE[]; // внешний массив

void main()

{

QQ) int *point = &SINE[0]; // объявляем ук. на int и присвайваем

ему адрес 1 элемента SINE

int i=256;

while (i)
{
out=*point; // от что лежит по адресу point присв пер out.
point++; // адрес = адрес+1;
i--;
}

!!!!
WW) point = &SINE[0]; // вот здесь не понятно что твориться..
!!!!
}


сама таблица лежит в sine_table.asm.

;-----------------------------

.global _SINE
.sect "sine_tab"

_SINE
.WORD 00324h
............
.WORD 00000h

.END

Так вот когда выполняется команда point = &SINE[0]; в конце программы , указатель point вмето того чтобы указывать на &SINE[0], указывает куда то не туда. Причем асемлерные команды сторок QQ) и WW)
одинаковы ST #20cfh,0h; Где я заблудился?
Вот листинг.

;***************************************************************
;* TMS320C54x ANSI C Codegen Version 3.70 *
;* Date/Time created: Tue Sep 24 15:17:47 2002 *
;***************************************************************
.mmregs
FP .set AR7
.c_mode
.file "sine.c"
.global _out
.bss _out,1,0,0
.sym _out,_out, 4, 2, 16
.sect ".text"
.global _main
.sym _main,_main, 32, 2, 0
.func 14

;***************************************************************
;* FUNCTION DEF: _main *
;***************************************************************
_main:
.line 3
.sym _point,0, 20, 1, 16
.sym _i,1, 4, 1, 16
PSHM AR1
FRAME #-2
NOP
.line 5
ST #_SINE,*SP(0) ; |18|
.line 7
ST #256,*SP(1) ; |20|
.line 9
LD *SP(1),A ; |22|
BC L2,AEQ ; |22|
; branch occurs ; |22|
L1:
.line 11
MVDK *SP(0),*(AR1)
MVDK *AR1,*(_out) ; |24|
.line 12
ADDM #1,*SP(0) ; |25|
.line 13
ADDM #-1,*SP(1) ; |26|
.line 14
LD *SP(1),A ; |27|
BC L1,ANEQ ; |27|
; branch occurs ; |27|
L2:
.line 16
ST #_SINE,*SP(0) ; |29|
.line 18
FRAME #2
POPM AR1
RET
; return occurs
.endfunc 31,000000400h,3


;***************************************************************
;* UNDEFINED EXTERNAL REFERENCES *
;***************************************************************
.global _SINE

;***************************************************************
;* TYPE INFORMATION *
;***************************************************************

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru