Observe that the sum of variables x and y is stored

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

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 specified 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 specified by label .L10 to the scaled (by 4 since each jump table...
View Full Document

Ask a homework question - tutors are online