DCI
The DCI
directive allocates memory that is aligned and defines the initial runtime contents of the memory.
In A32 code, it allocates one or more words of memory, aligned on four-byte boundaries.
In T32 code, it allocates one or more halfwords of memory, aligned on two-byte boundaries.
Syntax
{
} label
DCI{.W}
{,expr
}
expr
where:
expr
- is a numeric expression.
.W
- if present, indicates that four bytes must be inserted in T32 code.
Usage
The DCI
directive is very like the DCD
or DCW
directives,
but the location is marked as code instead of data. Use DCI
when
writing macros for new instructions not supported by the version
of the assembler you are using.
In A32 code, DCI
inserts up to three
bytes of padding before the first defined word, if necessary, to
achieve four-byte alignment. In T32 code, DCI
inserts
an initial byte of padding, if necessary, to achieve two-byte alignment.
You can use DCI
to insert a bit pattern
into the instruction stream. For example, use:
DCI 0x46c0
to insert the T32 operation MOV r8,r8
.
Example macro
MACRO ; this macro translates newinstr Rd,Rm ; to the appropriate machine code newinst $Rd,$Rm DCI 0xe16f0f10 :OR: ($Rd:SHL:12) :OR: $Rm MEND
32-bit T32 example
DCI.W 0xf3af8000 ; inserts 32-bit NOP, 2-byte aligned.