L14 25 p2align 47 inserted to optimize cache

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: mbler. We illustrate the use of asm by an example where having access to the condition codes can be useful. Consider functions with the following prototypes: int ok_smul(int x, int y, int *dest); int ok_umul(unsigned x, unsigned y, unsigned *dest); Each is supposed to compute the product of arguments x and y and store the result in the memory location specified by argument dest. As return values, they should return 0 when the multiplication overflows and 1 when it does not. We have separate functions for signed and unsigned multiplication, since they overflow under different circumstances. Examining the documentation for the IA32 multiply instructions mul and imul, we see that both set the carry flag CF when they overflow. Examining Figure 3.9, we see that the instruction setae can be used to set the low-order byte of a register to 0 when this flag is set and to 1 otherwise. Thus, we wish to insert this instruction into the sequence generated by the compiler. In an attempt to use the least amount of both assembly code and detailed analysis, we attempt to implement ok_smul with the following code: co...
View Full Document

Ask a homework question - tutors are online