(seg, size, rex, addrp)
| 1113 | } |
| 1114 | |
| 1115 | static void |
| 1116 | db_print_address(seg, size, rex, addrp) |
| 1117 | const char * seg; |
| 1118 | int size; |
| 1119 | int rex; |
| 1120 | struct i_addr * addrp; |
| 1121 | { |
| 1122 | if (addrp->is_reg) { |
| 1123 | db_printf("%s", db_reg[rex != 0 ? 1 : 0][(size == LONG && (rex & REX_W)) ? QUAD : size][addrp->disp]); |
| 1124 | return; |
| 1125 | } |
| 1126 | |
| 1127 | if (seg) { |
| 1128 | db_printf("%s:", seg); |
| 1129 | } |
| 1130 | |
| 1131 | if (addrp->disp != 0 || (addrp->base == NULL && addrp->index == NULL)) |
| 1132 | db_printsym((db_addr_t)addrp->disp, DB_STGY_ANY); |
| 1133 | if (addrp->base != NULL || addrp->index != NULL) { |
| 1134 | db_printf("("); |
| 1135 | if (addrp->base) |
| 1136 | db_printf("%s", addrp->base); |
| 1137 | if (addrp->index) |
| 1138 | db_printf(",%s,%d", addrp->index, 1<<addrp->ss); |
| 1139 | db_printf(")"); |
| 1140 | } |
| 1141 | } |
| 1142 | |
| 1143 | /* |
| 1144 | * Disassemble floating-point ("escape") instruction |
no test coverage detected