The cgi assembler at
http://mspgcc.sourceforge.net/assemble.html
generates
push #4 (2 cycles)
OPC 0x1222
while push #8
push #8 (4 cycles)
OPC 0x1230
DW 0x0008
but the errata descriptions at
http://www.ti.com/sc/cgi-bin/buglist.cgi
for many MSP430's list the CPU4 bug, and indicate
that the assembler will generate a 2 word instruction
for both the push #4 and push #8. (The msp430 binutils
assembler as does generate push #4 as 2 words,
like the sourceforge cgi tool does for push #8)
It is interesting to note the the CPU4 bug report
states a different number of cycles for both
types of instructions
CPU4 - Cpu: Fixed by assembler SW - push #4, push #8
cannot use constant register
Description
CPU4 - Bug description:
Module: CPU, Function PUSH #4, PUSH #8 The
single operand instruction PUSH cannot use the
internal constants (CG) 4 and 8.
The other internal constants (0, 1, 2, -1) can be
used.
The Assembler version 1.08 and higher produces
correct code.
The number of clock cyles is different: PUSH
#CG uses address mode 00, requiring 3 cycles, 1
word instruction PUSH #4/#8 uses address mode
11, requiring 5 cycles, 2 word instruction
Workaround implemented in assembler. No fix
planned.