6 immediate data transfer to isap registers, Delayed cof rules -19, Isap-core register transfers -62 – Freescale Semiconductor StarCore SC140 User Manual

Page 242

Advertising
background image

6-62

SC140 DSP Core Reference Manual

Immediate Data Transfer to ISAP registers

Example 6-2. ISAP-Core register transfers

The following line of code,

core_ins {move_special d1,k0}

That uses these instructions,

1st - core_ins = a generic core instruction

2nd - {move_special d1, k0} = a fictional ISAP instruction (for illustration purposes only), whose
intent is to take the data in d1 (a core register), and place it in the k0 ISAP register.

Is translated by the core assembler (at the opcode level) to read, in effect, the following:

core_ins move.l d1,d0 {move_special bus,k0}

The core does not take the data in d1 and place it in d0, but it takes the data in d1, and drives it on the
core-ISAP register bus. In a complementary manner, the ISAP move_special instruction should only
sample the data from the core-ISAP bus, and place it in the k0 ISAP register.

6.6 Immediate Data Transfer to ISAP registers

The ISAP architect can define ISAP instructions that write immediate data to ISAP registers. These
instructions are treated in a similar manner like memory moves instructions: the assembler translate the
ISAP instructions into two instructions: one core instruction that writes an immediate value to a dummy
core register, and an ISAP instruction that samples the data to an ISAP register.

The assembler can use any move-immediate core instruction to a DALU register, for example “MOVE.L
#s32,D0” (See

Appendix , “MOVE.L,”

on page A-272). When executed in parallel with an ISAP

instruction, the core does not sample the data to a DALU register. This enables performing immediate data
transfers to ISAP registers.

Example 6-3. ISAP-Core register transfers

The following line of code,

core_ins {move_special #$1234,k0}

That uses these instructions,

1st - core_ins = a generic core instruction

2nd - {move_special #$1234, k0} = a fictional ISAP instruction (for illustration purposes only),
whose intent is to take the number $1234 and place it in the k0 ISAP register.

Is translated by the core assembler (at the opcode level) to read, in effect, the following:

core_ins move.l #$1234,d0 {move_special bus,k0}

The core does not take the number $1234 and place it in d0, but it takes the number $1234, and drives it on
the core-ISAP register bus. In a complementary manner, the ISAP move_special instruction should
only sample the data from the core-ISAP bus, and place it in the k0 ISAP register.

Advertising