C/C++ Compiler Language Extensions
Assembly Construct Operand Description
The second and third arguments to the
ands in the assembly language template. There are several pieces of
information that need to be conveyed for the compiler to know how to
assign registers to operands. This information is conveyed with an oper-
and constraint. The compiler needs to know what kind of registers the
assembly instructions can operate on, so it can allocate the correct register
type.
You convey this information with a letter in the operand constraint string
which describes the class of allowable registers.
describes the correspondence between constraint letters and register
classes.
The use of any letter not listed in
behavior. The compiler does not check the validity of the code by
using the constraint letter.
For example, if your assembly template contains
+= m3);"
, the compiler needs to know that it should put
p
ister (
I0–I3
information to
is the constraint letter for
"w"
To assign registers to the operands, the compiler must also be told which
operands in an assembly language instruction are inputs, which are out-
puts, and which outputs may not overlap inputs. The compiler is told this
in three ways.
• The output operand list appears as the first argument after the
assembly language template. The list is separated from the assembly
language template with a colon. The input operands are separated
from the output operands with a colon and always follow the out-
put operands.
1-68
and the address you want to load from is in the variable
) before it generates your instruction. You convey this
by specifying the operand
cc219x
VisualDSP++ 3.5 C/C++ Compiler and Library Manual
construct describe the oper-
asm()
Table 1-9 on page 1-72
Table 1-9
results in unspecified
registers.
DAG1 I
for ADSP-219x DSPs
"ax1 = dm(%0
in a
reg-
p
DAG1 I
where
"w" (p)
Need help?
Do you have a question about the VISUALDSP++ 3.5 and is the answer not in the manual?
Questions and answers