This preview shows page 1. Sign up to view the full content.
Unformatted text preview: eclare the argument types. 3.14.7 Testing and Comparing Floating-Point Values
Similar to the integer case, determining the relative values of two ﬂoating-point numbers involves using a comparison instruction to set condition codes and then testing these condition codes. For ﬂoating point, however, the condition codes are part of the ﬂoating-point status word, a 16-bit register that contains various ﬂags about the ﬂoating-point unit. This status word must be transferred to an integer word, and then the particular bits must be tested. 3.14. *FLOATING-POINT CODE
Ordered fcoms fcoml fcom fcom fcomps fcompl fcomp fcomp fcompp Unordered fucoms fucoml fucom fucom fucomps fucompl fucomp fucomp fucompp 185 Addr Addr %st( ) Addr Addr %st( ) Addr Addr %st( ) Addr Addr %st( ) ÇÔ ¾ ÅÑ ÅÑ %st( ) %st(1) ÅÑ ÅÑ %st( ) %st(1) %st(1) Ö Ö Ö Ö Type Single Double Extended Extended Single Double Extended Extended Extended Number of Pops 0 0 0 0 1 1 1 1 2 Figure 3.34: Floating-Point Comparison Instructions. Ordered vs. unordered comparisons differ in their treatment of NaN’s. ÇÔ ½ ÇÔ ¾ Binary
¼¼¼¼¼¼¼¼ ¼¼¼¼¼¼¼½ ¼¼½¼¼¼¼¼ Unordered ¼¼½¼¼½¼½ Decimal 0 1 64 69 Figure 3.35: Encoded Results from Floating-Point Comparison. The results are encoded in the highorder byte of the ﬂoating-point status word after masking out all but bits 0, 2, and 6. There are a number of different ﬂoating-point comparison instructions as documented in Figure 3...
View Full Document
- Spring '10
- The American