Subclasses
Compilers & Interpreters (537 products)
-
9/10
ccmalloc
"ccmalloc is a C/C++ memory profiler and memory leak tracer."... -
9/10
ici
"ICI is a general purpose interpretive programming language that has... -
9/10
Fpgac
"FpgaC compiles a subset of the C language to net lists which can be... -
9/10
Lsharp
"L Sharp .NET is a powerful lisp-based scripting language for .NET. It... -
9/10
Regina REXX Interpreter
"An implementation of the the ANSI Standard REXX Programming Language,...
Forum
embedding ASM in C
i took a digital filter code from cornell university website but when i try running it in winavr i get the error
" prog.c:161: error: expected string literal before '.' token"
the code is as follows
int filter1(int xx)
{
asm volatile
(
.macro mult_acc //error accurs here
muls r23, r21
add r31, r0
mul r22, r20
add r24, r0
adc r30, r1
adc r31, r27
mulsu r23, r20
add r30, r0
adc r31, r1
mulsu r21, r22
add r30, r0
adc r31, r1
.endm
push r20
push r21
clr r27
clr r24 //clear 24 bit result reg // msb to lsb => r31:r30:r24
clr r30
clr r31
lds R22, _B111
lds R23, _B111+1
ld R20, Y
ldd R21, Y+1
mult_acc
lds R22, _B112
lds R23, _B112+1
lds R20, _x11_1
lds R21, _x11_1+1
mult_acc
lds R22, _B113
lds R23, _B113+1
lds R20, _x11_2
lds R21, _x11_2+1
mult_acc
lds R22, _A112
lds R23, _A112+1
lds R20, _y11_1
lds R21, _y11_1+1
mult_acc
lds R22, _A113
lds R23, _A113+1
lds R20, _y11_2
lds R21, _y11_2+1
mult_acc
lds R20, _x11_1
lds R21, _x11_1+1
sts _x11_2, r20
sts _x11_2+1, R21
ld R20, Y
ldd R21, Y+1
sts _x11_1, r20
sts _x11_1+1, R21
lds R20, _y11_1
lds R21, _y11_1+1
sts _y11_2, R20
sts _y11_2+1, R21
sts _y11_1, r30
sts _y11_1+1, r31
lds R22, _B121
lds R23, _B121+1
lds R20, _y11_1
lds R21, _y11_1+1
clr r30
clr r31
mult_acc
lds R22, _B122
lds R23, _B122+1
lds R20, _x12_1
lds R21, _x12_1+1
mult_acc
lds R22, _B123
lds R23, _B123+1
lds R20, _x12_2
lds R21, _x12_2+1
mult_acc
lds R22, _A122
lds R23, _A122+1
lds R20, _y12_1
lds R21, _y12_1+1
mult_acc
lds R22, _A123
lds R23, _A123+1
lds R20, _y12_2
lds R21, _y12_2+1
mult_acc
lds R20, _x12_1
lds R21, _x12_1+1
sts _x12_2, r20
sts _x12_2+1, R21
lds R20, _y11_1
lds R21, _y11_1+1
sts _x12_1, r20
sts _x12_1+1, R21
lds R20, _y12_1
lds R21, _y12_1+1
sts _y12_2, R20
sts _y12_2+1, R21
sts _y12_1, r30
sts _y12_1+1, r31
pop r21
pop r20
)
}
[...]
" prog.c:161: error: expected string literal before '.' token"
the code is as follows
int filter1(int xx)
{
asm volatile
(
.macro mult_acc //error accurs here
muls r23, r21
add r31, r0
mul r22, r20
add r24, r0
adc r30, r1
adc r31, r27
mulsu r23, r20
add r30, r0
adc r31, r1
mulsu r21, r22
add r30, r0
adc r31, r1
.endm
push r20
push r21
clr r27
clr r24 //clear 24 bit result reg // msb to lsb => r31:r30:r24
clr r30
clr r31
lds R22, _B111
lds R23, _B111+1
ld R20, Y
ldd R21, Y+1
mult_acc
lds R22, _B112
lds R23, _B112+1
lds R20, _x11_1
lds R21, _x11_1+1
mult_acc
lds R22, _B113
lds R23, _B113+1
lds R20, _x11_2
lds R21, _x11_2+1
mult_acc
lds R22, _A112
lds R23, _A112+1
lds R20, _y11_1
lds R21, _y11_1+1
mult_acc
lds R22, _A113
lds R23, _A113+1
lds R20, _y11_2
lds R21, _y11_2+1
mult_acc
lds R20, _x11_1
lds R21, _x11_1+1
sts _x11_2, r20
sts _x11_2+1, R21
ld R20, Y
ldd R21, Y+1
sts _x11_1, r20
sts _x11_1+1, R21
lds R20, _y11_1
lds R21, _y11_1+1
sts _y11_2, R20
sts _y11_2+1, R21
sts _y11_1, r30
sts _y11_1+1, r31
lds R22, _B121
lds R23, _B121+1
lds R20, _y11_1
lds R21, _y11_1+1
clr r30
clr r31
mult_acc
lds R22, _B122
lds R23, _B122+1
lds R20, _x12_1
lds R21, _x12_1+1
mult_acc
lds R22, _B123
lds R23, _B123+1
lds R20, _x12_2
lds R21, _x12_2+1
mult_acc
lds R22, _A122
lds R23, _A122+1
lds R20, _y12_1
lds R21, _y12_1+1
mult_acc
lds R22, _A123
lds R23, _A123+1
lds R20, _y12_2
lds R21, _y12_2+1
mult_acc
lds R20, _x12_1
lds R21, _x12_1+1
sts _x12_2, r20
sts _x12_2+1, R21
lds R20, _y11_1
lds R21, _y11_1+1
sts _x12_1, r20
sts _x12_1+1, R21
lds R20, _y12_1
lds R21, _y12_1+1
sts _y12_2, R20
sts _y12_2+1, R21
sts _y12_1, r30
sts _y12_1+1, r31
pop r21
pop r20
)
}
Date: October 9, 2008 at 06:18
Author:
leoniuds
Last post: October 9, 2008 at 06:18
Replies: 0
Start a new discussion