<p>Can someone explain the mechanics of a jump table and why is would be needed in embedded systems?</p>

From Wikipedia
:
In computer programming, a branch
  table (sometimes known as a jump
  table) is a term used to describe an
  efficient method of transferring
  program control (branching) to another
  part of a program (or a different
  program that may have been dynamically
  loaded) using a table of branch
  instructions. The branch table
  construction is commonly used when
  programming in assembly language but
  may also be generated by a compiler.
A branch table consists of a serial
  list of unconditional branch
  instructions that is branched into
  using an offset created by multiplying
  a sequential index by the instruction
  length (the number of bytes in memory
  occupied by each branch instruction).
  It makes use of the fact that machine
  code instructions for branching have a
  fixed length and can be executed
  extremely efficiently by most
  hardware, and is most useful when
  dealing with raw data values that may
  be easily converted to sequential
  index values. Given such data, a
  branch table can be extremely
  efficient; it usually consists of the
  following steps: optionally validating
  the input data to ensure it is
  acceptable; transforming the data into
  an offset into the branch table, this
  usually involves multiplying or
  shifting it to take into account the
  instruction length; and branching to
  an address made up of the base of the
  table and the generated offset: this
  often involves an addition of the
  offset onto the program counter
  register.