Repository navigation
Instruction Timing
Normative source: SPRU056D, Appendix B (Instruction Classes and Cycles), with the cycle notation from chapter 6. Cycle counts are machine cycles (CLKOUT1 periods) for a single execution; repeats and wait states add to them as described below.
Where the instruction executes (the code source):
| Source | Meaning |
|---|---|
| ROM | on-chip program ROM |
| DARAM | on-chip dual-access program RAM |
| SARAM | on-chip single-access program RAM |
| External | external program memory |
Where an operand lives:
| Operand | Meaning |
|---|---|
| DARAM | internal dual-access RAM |
| SARAM | internal single-access RAM |
| External | external memory |
| ROM | internal program ROM |
| MMR | memory-mapped register |
| MMPORT | memory-mapped I/O port |
Wait-state and repeat variables (with optional src, dst, code subscripts):
| Symbol | Meaning |
|---|---|
| d | data-memory wait states for an external data access |
| io | I/O wait states for an external I/O access |
| p | program-memory wait states for an external program access |
| n | repetitions (n > 2 to fill the pipeline) of a repeated instruction |
An external read takes at least one machine cycle; an external write at least two (three if it is immediately next to an external read). With m on-chip wait states both reads and writes take m+1 cycles.
Every instruction falls into one of these classes (SPRU056D Table B-1).
| Class | Words, cycles and access pattern |
|---|---|
| I | 1 word, 1 cycle, no memory operands |
| IIA | 1 word, 1 cycle, memory read operand |
| IIB | 1 word, 1 cycle, memory-mapped register read |
| III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
| IVA | 1 word, 1 cycle, memory write operand |
| IVB | 1 word, 1 cycle, memory-mapped register write |
| V | 1 word, 1 cycle, memory read and write |
| VI | 2 words, 2 cycles, memory read and write |
| VIIa | 2 words, 2 cycles, memory read operand |
| VIIb | 2 words, 2 cycles, memory write operand, not repeatable |
| VIII | 2 words, 4 cycles, program-counter discontinuity, no delayed slots, not repeatable |
| IX | 2 words, 2 cycles, program-counter discontinuity, 2 delayed slots, not repeatable |
| X | 1 word, 4 cycles, program-counter discontinuity, no delayed slots, not repeatable |
| XI | 1 word, 2 cycles, program-counter discontinuity, 2 delayed slots, not repeatable |
| XII | 2 words, 3 cycles, block data transfer, data to data space |
| XIII | 1 word, 2 cycles, block data transfer, data to data space |
| XIV | 2 words, 3 cycles, block data transfer, program to data space |
| XV | 1 word, 2 cycles, block data transfer, program to data space |
| XVI | 1 word, 2 cycles, block data transfer, data to program space |
| XVII | 1 word, 3 cycles, table read |
| XVIII | 1 word, 3 cycles, table write |
| XIX | 2 words, 3 cycles, multiply accumulate |
| XX | 1 word, 2 cycles, multiply accumulate |
| XXI | 2 words, 3 cycles, multiply accumulate with data move |
| XXII | 1 word, 2 cycles, multiply accumulate with data move |
| XXIII | 2 words, 2 cycles, memory-mapped register load |
| XXIV | 2 words, 2 cycles, memory-mapped register store |
| XXV | 2 words, 3 cycles, output port |
| XXVI | 2 words, 2 cycles, input port |
| XXVII | 1 word, 2 cycles, pipeline-protected, memory read |
| XXVIII | 1 word, 2 cycles, pipeline-protected, memory read, not repeatable |
| XXIIX | 1 word, 2 cycles, no memory access, not repeatable, pipeline protected |
From SPRU056D Table B-2. A mnemonic with several forms appears once per form, since the form determines the class.
| Instruction form | Cycle class | Words, cycles, access |
|---|---|---|
ABS |
I | 1 word, 1 cycle, no memory operands |
ADCB |
I | 1 word, 1 cycle, no memory operands |
ADD |
IIA | 1 word, 1 cycle, memory read operand |
ADD #k |
I | 1 word, 1 cycle, no memory operands, not repeatable |
ADD #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
ADDB |
I | 1 word, 1 cycle, no memory operands |
ADDC |
IIA | 1 word, 1 cycle, memory read operand |
ADDS |
IIA | 1 word, 1 cycle, memory read operand |
ADDT |
IIA | 1 word, 1 cycle, memory read operand |
ADRK #k |
I | 1 word, 1 cycle, no memory operands, not repeatable |
AND |
IIA | 1 word, 1 cycle, memory read operand |
AND #lk |
III | 2 words, 2 cycles long-immediate operand, no memory access, not repeatable |
ANDB |
I | 1 word, 1 cycle, no memory operands |
APAC |
I | 1 word, 1 cycle, no memory operands |
APL |
V | 1 word, 1 cycle, memory read and write |
APL |
VI | 2 words, 2 cycles, memory read and write |
B |
VIII | 2 words, 4 cycles program counter discontinuity, no delayed slots, not repeatable |
BACC |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
BACCD |
XI | 1 word, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable Instruction Classes and Cycles B-5 |
BANZ |
VIII | 2 words, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
BANZD |
IX | 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable |
BCND |
VIII | 2 words, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
BCNDD |
IX | 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable |
BD |
IX | 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable |
BIT |
IIA | 1 word, 1 cycle, memory read operand |
BITT |
IIA | 1 word, 1 cycle, memory read operand |
BLDD |
XIII | 1 word, 2 cycles, block data transfer, data to data space |
BLDD |
XII | 2 words, 3 cycles, block data transfer, data to data space |
BLDP |
XVI | 1 word, 2 cycles, block data transfer, data to program space |
BLPD |
XV | 1 word, 2 cycles, block data transfer, program to data space |
BLPD |
XIV | 2 words, 3 cycles, block data transfer, program to data space |
BSAR |
I | 1 word, 1 cycle, no memory operands |
CALA |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
CALAD |
XI | 1 word, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable |
CALL |
VIII | 2 words, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
CALLD |
IX | 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable |
CC |
VIII | 2 words, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
CCD |
IX | 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable |
CLRC |
I | 1 word, 1 cycle, no memory operands |
CMPL |
I | 1 word, 1 cycle, no memory operands |
CMPR |
I | 1 word, 1 cycle, no memory operands |
CPL |
IIA | 1 word, 1 cycle, memory read operand |
CPL #lk |
VIIa | 2 words, 2 cycles, memory read operand |
CRGT |
I | 1 word, 1 cycle, no memory operands |
CRLT |
I | 1 word, 1 cycle, no memory operands |
DMOV |
V | 1 word, 1 cycle, memory read and write |
EXAR |
I | 1 word, 1 cycle, no memory operands |
IDLE |
I | 1 word, 1 cycle, no memory operands, not repeatable |
IDLE2 |
I | 1 word, 1 cycle, no memory operands, not repeatable |
IN |
XXVI | 2 words, 2 cycles, input port |
INTR |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
LACB |
I | 1 word, 1 cycle, no memory operands |
LACC |
IIA | 1 word, 1 cycle, memory read operand |
LACC #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
LACL |
IIA | 1 word, 1 cycle, memory read operand |
LACL #k |
I | 1 word, 1 cycle, no memory operands, not repeatable |
LACT |
IIA | 1 word, 1 cycle, memory read operand |
LAMM |
IIB | 1 word, 1 cycle, memory-mapped register read |
LAR |
XXVII | 1 word, 2 cycles, pipeline-protected, memory read |
LAR ARn, #k |
XXVIII | 1 word, 2 cycles, pipeline-protected, memory read, not repeatable Instruction Classes and Cycles B-7 |
LAR ARn, #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
LDP |
XXVII | 1 word, 2 cycles, pipeline-protected, memory read |
LDP #k |
XXVIII | 1 word, 2 cycles, pipeline-protected, memory read, not repeatable |
LMMR |
XXIII | 2 words, 2 cycles, memory-mapped register load |
LPH |
IIA | 1 word, 1 cycle, memory read operand |
LST |
XXVII | 1 word, 2 cycles, pipeline-protected, memory read |
LT |
IIA | 1 word, 1 cycle, memory read operand |
LTA |
IIA | 1 word, 1 cycle, memory read operand |
LTD |
V | 1 word, 1 cycle, memory read and write |
LTP |
IIA | 1 word, 1 cycle, memory read operand |
LTS |
IIA | 1 word, 1 cycle, memory read operand |
MAC |
XIX | 2 words, 3 cycles, multiply accumulate |
MACD |
XXI | 2 words, 3 cycles, multiply accumulate with data move |
MADD |
XXII | 1 word, 2 cycles, multiply accumulate with data move |
MADS |
XX | 1 word, 2 cycles, multiply accumulate |
MAR |
I | 1 word, 1 cycle, no memory operands |
MPY |
IIA | 1 word, 1 cycle, memory read operand |
MPY #k |
I | 1 word, 1 cycle, no memory operands, not repeatable |
MPY #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
MPYA |
IIA | 1 word, 1 cycle, memory read operand |
MPYS |
IIA | 1 word, 1 cycle, memory read operand |
MPYU |
IIA | 1 word, 1 cycle, memory read operand |
NEG |
I | 1 word, 1 cycle, no memory operands |
NMI |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
NOP |
I | 1 word, 1 cycle, no memory operands |
NORM |
I | 1 word, 1 cycle, no memory operands |
OPL |
V | 1 word, 1 cycle, memory read and write |
OPL |
VI | 2 words, 2 cycles, memory read and write |
OR |
IIA | 1 word, 1 cycle, memory read operand |
OR #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
ORB |
I | 1 word, 1 cycle, no memory operands |
OUT |
XXV | 2 words, 3 cycles, output port |
PAC |
I | 1 word, 1 cycle, no memory operands |
POP |
I | 1 word, 1 cycle, no memory operands |
POPD |
IVA | 1 word, 1 cycle, memory write operand |
PSHD |
IIA | 1 word, 1 cycle, memory read operand |
PUSH |
I | 1 word, 1 cycle, no memory operands |
RET |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
RETC |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
RETCD |
XI | 1 word, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable |
RETD |
XI | 1 word, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable |
RETE |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
RETI |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
ROL |
I | 1 word, 1 cycle, no memory operands Instruction Classes and Cycles B-9 |
ROLB |
I | 1 word, 1 cycle, no memory operands |
ROR |
I | 1 word, 1 cycle, no memory operands |
RORB |
I | 1 word, 1 cycle, no memory operands |
RPT |
IIA | 1 word, 1 cycle, memory read operand, not repeatable |
RPT #k |
XXIX | 1 word, 2 cycle, no memory operands, not repeatable |
RPT #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
RPTB |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
RPTZ #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
SACB |
I | 1 word, 1 cycle, no memory operands |
SACH |
IVA | 1 word, 1 cycle, memory write operand |
SACL |
IVA | 1 word, 1 cycle, memory write operand |
SAMM |
IVB | 1 word, 1 cycle, memory-mapped register write |
SAR |
IVA | 1 word, 1 cycle, memory write operand |
SATH |
I | 1 word, 1 cycle, no memory operands |
SATL |
I | 1 word, 1 cycle, no memory operands |
SBB |
I | 1 word, 1 cycle, no memory operands |
SBBB |
I | 1 word, 1 cycle, no memory operands |
SBRK #k |
I | 1 word, 1 cycle, no memory operands, not repeatable |
SETC |
I | 1 word, 1 cycle, no memory operands |
SFL |
I | 1 word, 1 cycle, no memory operands |
SFLB |
I | 1 word, 1 cycle, no memory operands |
SFR |
I | 1 word, 1 cycle, no memory operands |
SFRB |
I | 1 word, 1 cycle, no memory operands |
SMMR |
XXIV | 2 words, 2 cycles, memory-mapped register store |
SPAC |
I | 1 word, 1 cycle, no memory operands |
SPH |
IVA | 1 word, 1 cycle, memory write operand |
SPL |
IVA | 1 word, 1 cycle, memory write operand |
SPLK |
VIIb | 2 words, 2 cycles, memory write operand, not repeatable |
SPM |
I | 1 word, 1 cycle, no memory operands, not repeatable |
SQRA |
IIA | 1 word, 1 cycle, memory read operand |
SQRS |
IIA | 1 word, 1 cycle, memory read operand |
SST |
IVA | 1 word, 1 cycle, memory write operand |
SUB |
IIA | 1 word, 1 cycle, memory read operand |
SUB #k |
I | 1 word, 1 cycle, no memory operands, not repeatable |
SUB #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
SUBB |
IIA | 1 word, 1 cycle, memory read operand |
SUBC |
IIA | 1 word, 1 cycle, memory read operand |
SUBS |
IIA | 1 word, 1 cycle, memory read operand |
SUBT |
IIA | 1 word, 1 cycle, memory read operand |
TBLR |
XVII | 1 word, 3 cycles, table read |
TBLW |
XVIII | 1 word, 3 cycles, table write |
TRAP |
X | 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable |
XC |
I | 1 word, 1 cycle, no memory operands, not repeatable |
XOR |
IIA | 1 word, 1 cycle, memory read operand |
XOR #lk |
III | 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable |
XORB |
I | 1 word, 1 cycle, no memory operands |
XPL |
V | 1 word, 1 cycle, memory read and write |
XPL |
VI | 2 words, 2 cycles, memory read and write Instruction Classes and Cycles B-11 |
ZALR |
IIA | 1 word, 1 cycle, memory read operand |
ZAP |
I | 1 word, 1 cycle, no memory operands |
ZPR |
I | 1 word, 1 cycle, no memory operands Appendix AppendixCA |
MIT - (c) 2026 Grzegorz Worona grzegorz@worona.pl. See LICENSE.
Start here
The TMS320C5x processor
Writing assembly
The instruction set
A: ABS ADCB ADD ADDB ADDC ADDH ADDI ADDK ADDS ADDT ADLK ADRK AND ANDB ANDI ANDK APAC APL APLI APLK
B: B BACC BACCD BANZ BANZD BBNZ BBZ BC BCND BCNDD BD BDDD BDSD BGEZ BGZ BIOZ BIT BITT BKDK BLDD BLDP BLEZ BLKD BLKP BLPD BLZ BNC BNV BNZ BPSD BSAR BV BZ
C: CALA CALAD CALL CALLD CC CCD CLRC CMPL CMPR CNFD CNFP CONF CPL CPLI CPLK CRGT CRLT
E: EHWBS EHWBT EINT EMPSD EMRET ESTOP ESTPD ETRAP EXAR
F: FORT
L: LAC LACB LACC LACI LACK LACL LACT LALK LAMM LAR LARK LARP LDP LDPI LDPK LMMR LPH LRLK LST LST0 LST1 LT LTA LTD LTP LTS
M: MAC MACD MADD MADS MAR MPY MPYA MPYI MPYK MPYS MPYU MRKL
O: OPL OPLI OPLK OR ORB ORI ORK OUT
R: RC RET RETC RETCD RETD RETE RETI RFSM RHM ROL ROLB ROR RORB ROVM RPT RPTB RPTI RPTK RPTR RPTZ RSXM RTC RTXM RXF
S: SACB SACH SACL SAMM SAR SATH SATL SBB SBBB SBLK SBRK SC SETC SFL SFLB SFR SFRB SFSM SHM SMMR SOVM SPAC SPH SPL SPLK SPM SQRA SQRS SST SST0 SST1 SSXM STC STXM SUB SUBB SUBC SUBH SUBI SUBK SUBS SUBT SWI SXF
X: XC XOR XORB XORI XORK XPL XPLI XPLK
Building a program
The tools
Normative sources: TI SPRU056D and SPRU018D (see References).
License: MIT - (c) 2026 Grzegorz Worona.