[an error occurred while processing this directive]
|
Написал простенькую программу на С, котороя берет значение синуса из look up table ( SINE ) и присвайвает его переменной (out):
//----------------------------------------
//---------
// файл sine.c
int out; { ему адрес 1 элемента SINE int i=256; ;----------------------------- .global _SINE _SINE .END Так вот когда выполняется команда point = &SINE[0]; в конце программы , указатель point вмето того чтобы указывать на &SINE[0], указывает куда то не туда. Причем асемлерные команды сторок QQ) и WW) ;*************************************************************** ;*************************************************************** ;***************************************************************
E-mail:
info@telesys.ru
#include
extern int SINE[]; // внешний массив
void main()
QQ) int *point = &SINE[0]; // объявляем ук. на int и присвайваем
while (i)
{
out=*point; // от что лежит по адресу point присв пер out.
point++; // адрес = адрес+1;
i--;
}
!!!!
WW) point = &SINE[0]; // вот здесь не понятно что твориться..
!!!!
}
сама таблица лежит в sine_table.asm.
.sect "sine_tab"
.WORD 00324h
............
.WORD 00000h
одинаковы 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 *
;***************************************************************
Ответы