Specifications

H8/300 instruction Remarks
CMP.B #i, RnL followed by SUBX #j, RnH Modelled as the 16-bit operation CMP.W #j:i,Rn, an instruction
that is not implemented in the H8/300. Also, RnH becomes
opaque since the SUBX changes it.
XOR when both operands are the same
(octet) register
Equivalent to assigning zero to the register.
INC, DEC Modelled as integer increment and decrement. The Z flag is
modelled correctly if there is at most one INC overflow (wrap-
around from 255 to 0) and at most one DEC underflow (wrap-
around from 0 to 255) in any loop that uses these instructions
for counting iterations.
POP, PUSH
The accessed stack location depends on the local stack height,
which may be unknown, in which case the analysis is
incomplete.
JMP with static address Modelled exactly.
JMP @Rn with static address table See section 5.6.
JMP @@aa:8 with static vector
JSR @@aa:8 with static vector
See section 5.6.
Bcc
The modelling of the condition codes for signed comparisons
depends on the option -bcc. See section 5.5.
BSR, JSR with static address The arithmetic effect of the BSR or JSR instruction itself is
modelled, but the effect of the called subprogram is modelled
only on the definition level (which cells are changed but not
which values they get). This is a general Bound-T feature, not
specific to the H8/300.
RTS, RTE Modelled exactly, assuming that the returning subprogram
follows the adopted calling protocol. See chapter 6.
EEPMOV
The instruction is expanded into a loop in the flow-graph. The
loop models the arithmetic effect on the registers (R4H, R5, R6)
but not the effect on the destination memory because the
dynamic memory access (@R6) is usually not resolved to
known memory locations.
NOP, SLEEP The time spent in sleep mode is not included in the reported
WCET bound.
ANDC, ORC, XORC
LDC with immediate operand
The effect of the immediate operand on the CCR flags Z and C
is fully modelled. Other CCR flags are not modelled at all.
AND, OR, XOR Modelled exactly. However, the arithmetic analysis in Bound-T
has generic limitations on modelling bitwise logical operators
when used in loop counting.
NEG
Result is opaque because we model unsigned arithmetic.
However, the Z flag is set to "operand = 0" and the C flag is set
to "operand > 0".
MULXU
Result is opaque, but can become non-opaque if constant
propagation constrains one operand to a single static value.
ADDX, SUBX Result is opaque because these instructions are used to build
multi-octet addition and subtraction which depends on
overflow (carry/borrow) in the addition and subtraction of
individual octets. Note the special case above for ADDX
immediately after ADD.B and SUBX immediately after CMP.B.
22 Supported H8/300 Features Bound-T for H8/300