115,118c115,117 < /* Print the status word STATUS. */ < < static void < print_i387_status_word (unsigned int status, struct ui_file *file) --- > // print the status word > // updated 20091231 (development@codenamezero.org) > static void print_i387_status_word (unsigned int status, struct ui_file *file) 120,137c119 < fprintf_filtered (file, "Status Word: %s", < hex_string_custom (status, 4)); < fputs_filtered (" ", file); < fprintf_filtered (file, " %s", (status & 0x0001) ? "IE" : " "); < fprintf_filtered (file, " %s", (status & 0x0002) ? "DE" : " "); < fprintf_filtered (file, " %s", (status & 0x0004) ? "ZE" : " "); < fprintf_filtered (file, " %s", (status & 0x0008) ? "OE" : " "); < fprintf_filtered (file, " %s", (status & 0x0010) ? "UE" : " "); < fprintf_filtered (file, " %s", (status & 0x0020) ? "PE" : " "); < fputs_filtered (" ", file); < fprintf_filtered (file, " %s", (status & 0x0080) ? "ES" : " "); < fputs_filtered (" ", file); < fprintf_filtered (file, " %s", (status & 0x0040) ? "SF" : " "); < fputs_filtered (" ", file); < fprintf_filtered (file, " %s", (status & 0x0100) ? "C0" : " "); < fprintf_filtered (file, " %s", (status & 0x0200) ? "C1" : " "); < fprintf_filtered (file, " %s", (status & 0x0400) ? "C2" : " "); < fprintf_filtered (file, " %s", (status & 0x4000) ? "C3" : " "); --- > fprintf_filtered (file, "status word : %s", hex_string_custom(status, 4)); 139c121 < fputs_filtered ("\n", file); --- > fprintf_filtered (file, " "); 141,143c123,134 < fprintf_filtered (file, < " TOP: %d\n", ((status >> 11) & 7)); < } --- > fprintf_filtered (file, " %s", (status & 0x0001) ? "IE" : " "); > fprintf_filtered (file, " %s", (status & 0x0002) ? "DE" : " "); > fprintf_filtered (file, " %s", (status & 0x0004) ? "ZE" : " "); > fprintf_filtered (file, " %s", (status & 0x0008) ? "OE" : " "); > fprintf_filtered (file, " %s", (status & 0x0010) ? "UE" : " "); > fprintf_filtered (file, " %s", (status & 0x0020) ? "PE" : " "); > > fprintf_filtered (file, " "); > > fprintf_filtered (file, " %s", (status & 0x0080) ? "ES" : " "); > > fprintf_filtered (file, " "); 145c136 < /* Print the control word CONTROL. */ --- > fprintf_filtered (file, " %s", (status & 0x0040) ? "SF" : " "); 147,148c138,152 < static void < print_i387_control_word (unsigned int control, struct ui_file *file) --- > fprintf_filtered (file, " "); > > fprintf_filtered (file, " %s", (status & 0x0100) ? "C0" : " "); > fprintf_filtered (file, " %s", (status & 0x0200) ? "C1" : " "); > fprintf_filtered (file, " %s", (status & 0x0400) ? "C2" : " "); > fprintf_filtered (file, " %s", (status & 0x4000) ? "C3" : " "); > > fprintf_filtered (file, "\n"); > > fprintf_filtered (file, " top of stack (TOP) : %d\n", ((status >> 11) & 7)); > } > > // print the control word > // updated 20091231 (development@codenamezero.org) > static void print_i387_control_word (unsigned int control, struct ui_file *file) 150,158c154 < fprintf_filtered (file, "Control Word: %s", < hex_string_custom (control, 4)); < fputs_filtered (" ", file); < fprintf_filtered (file, " %s", (control & 0x0001) ? "IM" : " "); < fprintf_filtered (file, " %s", (control & 0x0002) ? "DM" : " "); < fprintf_filtered (file, " %s", (control & 0x0004) ? "ZM" : " "); < fprintf_filtered (file, " %s", (control & 0x0008) ? "OM" : " "); < fprintf_filtered (file, " %s", (control & 0x0010) ? "UM" : " "); < fprintf_filtered (file, " %s", (control & 0x0020) ? "PM" : " "); --- > fprintf_filtered(file, "control word : %s\n", hex_string_custom(control, 4)); 160c156 < fputs_filtered ("\n", file); --- > fprintf_filtered(file, " exception masks : "); 162,163c158,169 < fputs_filtered (" PC: ", file); < switch ((control >> 8) & 3) --- > fprintf_filtered (file, "%s ", (control & 0x0020) ? "PM" : " "); // invalid operation > fprintf_filtered (file, "%s ", (control & 0x0010) ? "UM" : " "); // denormalized operand > fprintf_filtered (file, "%s ", (control & 0x0008) ? "OM" : " "); // zero divide > fprintf_filtered (file, "%s ", (control & 0x0004) ? "ZM" : " "); // overflow > fprintf_filtered (file, "%s ", (control & 0x0002) ? "DM" : " "); // underflow > fprintf_filtered (file, "%s ", (control & 0x0001) ? "IM" : " "); // precision > > fprintf_filtered (file, "\n"); > > fprintf_filtered (file, " precision control (PC) : "); > > switch ((control >> 8) & 3) 165,176c171,182 < case 0: < fputs_filtered ("Single Precision (24-bits)\n", file); < break; < case 1: < fputs_filtered ("Reserved\n", file); < break; < case 2: < fputs_filtered ("Double Precision (53-bits)\n", file); < break; < case 3: < fputs_filtered ("Extended Precision (64-bits)\n", file); < break; --- > case 0: > fprintf_filtered (file, "24-bits (single precision)\n"); > break; > case 1: > fprintf_filtered (file, "(reserved)\n"); > break; > case 2: > fprintf_filtered (file, "53-bits (double precision)\n"); > break; > case 3: > fprintf_filtered (file, "64-bits (extended precision)\n"); > break; 179,180c185,187 < fputs_filtered (" RC: ", file); < switch ((control >> 10) & 3) --- > fprintf_filtered (file, " rounding control (RC) : "); > > switch ((control >> 10) & 3) 182,193c189,200 < case 0: < fputs_filtered ("Round to nearest\n", file); < break; < case 1: < fputs_filtered ("Round down\n", file); < break; < case 2: < fputs_filtered ("Round up\n", file); < break; < case 3: < fputs_filtered ("Round toward zero\n", file); < break; --- > case 0: > fprintf_filtered (file, "round to nearest or even\n"); > break; > case 1: > fprintf_filtered (file, "round down (towards -inf)\n"); > break; > case 2: > fprintf_filtered (file, "round up (toward +inf)\n"); > break; > case 3: > fprintf_filtered (file, "chop (truncate toward zero)\n"); > break;