This preview shows page 1. Sign up to view the full content.
Unformatted text preview: ts to support this style of jump table, and hence our code is not legal C. The array jt contains 7 entries, each of which is the address of a block of code. We extend C with a data type code for this purpose. Lines 1 to 4 set up the jump table access. To make sure that values of x that are either less than 100 or greater than 106 cause the computation speciﬁed by the default case, the code generates an unsigned value xi equal to x-100. For values of x between 100 and 106, xi will have values 0 through 6. All other values will be greater than 6, since negative values of x-100 will wrap around to be very large unsigned numbers. The code therefore uses the ja (unsigned greater) instruction to jump to code for the default case when xi is greater than 6. Using jt to indicate the jump table, the code then performs a jump to the address at entry xi in this table. Note that this form of goto is not legal C. Instruction 4 implements the jump to an entry in the jump table. Since it is an indirect jump, the target is read from memory. The effective address of the read is determined by adding the base address speciﬁed by label .L10 to the scaled (by 4 since each jump table...
View Full Document
- Spring '10
- The American