Sunday, January 18, 2009

Is ColdFire next?

I spent several hours yesterday carefully reading ColdFire documentation, trying to understand what it was Freescale had accomplished, or at least what they left out of the 68000 to make ColdFire. You have to do more than glance thru the new instruction set. I did that a few weeks back and didn't get the sense that much had changed.

It turns out they left out a lot. But not in a bad way. Now the architecture really is much more a RISC-like load-store machine.

Operand size changes:
  • except for CLR, TST, and MOV, and a few inherently byte-oriented instructions (such as Scc and TAS), all instructions only work on long operands
Addressing mode changes:
  • single operand instructions - NEG, NOT, ASL, ASR, etc - and immediate instructions - ANDI, ORI, etc - only work on D registers
Instructions left out entirely:
  • BCD arithmetic (no surprise)
  • DBcc - decrement and branch
  • CHK
  • CMPM
  • EXG
  • MOVEP
  • RESET
  • ROL, ROR, ROXL, and ROXR (hmm - because they don't exist in C?)
  • RTD, RTR
  • TRAPV - again, we're programming in C, not Pascal ;-)
Instructions added:
  • BITREV
  • BYTEREV
  • FF1 (find first one bit)
  • MOV3Q (move 3 bit immediate to EA)
  • MVS (move with sign-extend)
  • MVZ (move with zero-extend)
  • TPF - trap false - a nop that can consume one or two following instructions!
Because the JM family (the USB parts) has ColdFire parts as well as S08, and they are not much more expensive - I may be experimenting with Forth on the ColdFire too. Especially if I get a JMBADGE.

1 comments:

  1. I have a badge for you. Somebody at the dorkbot meeting that you seem to busy to attend brought a few to give away. If you come down to the parts meeting on saturday (were the old school guys who might actually know a thing or two about the 08 family) I can give it to you.

    ReplyDelete