use _filtered routines for printing so symbolic addresses show up in the right place

This commit is contained in:
Ken Raeburn 1992-09-25 17:23:59 +00:00
parent 2629009330
commit f4e5603151

View File

@ -213,9 +213,9 @@ ctrl( memaddr, word1, word2 )
return;
}
fputs( ctrl_tab[i].name, stream );
fputs_filtered( ctrl_tab[i].name, stream );
if ( word1 & 2 ){ /* Predicts branch not taken */
fputs( ".f", stream );
fputs_filtered ( ".f", stream );
}
if ( ctrl_tab[i].numops == 1 ){
@ -224,7 +224,7 @@ ctrl( memaddr, word1, word2 )
if ( word1 & 0x00800000 ){ /* Sign bit is set */
word1 |= (-1 & ~0xffffff); /* Sign extend */
}
putc( '\t', stream );
fputs_filtered ( "\t", stream );
print_addr( word1 + memaddr );
}
}
@ -284,24 +284,24 @@ cobr( memaddr, word1, word2 )
fputs( cobr_tab[i].name, stream );
if ( word1 & 2 ){ /* Predicts branch not taken */
fputs( ".f", stream );
fputs_filtered ( ".f", stream );
}
putc( '\t', stream );
fputs_filtered ( "\t", stream, 0 );
src1 = (word1 >> 19) & 0x1f;
src2 = (word1 >> 14) & 0x1f;
if ( word1 & 0x02000 ){ /* M1 is 1 */
fprintf( stream, "%d", src1 );
fprintf_filtered ( stream, "%d", src1 );
} else { /* M1 is 0 */
fputs( reg_names[src1], stream );
fputs_filtered ( reg_names[src1], stream );
}
if ( cobr_tab[i].numops > 1 ){
if ( word1 & 1 ){ /* S2 is 1 */
fprintf( stream, ",sf%d,", src2 );
fprintf_filtered ( stream, ",sf%d,", src2 );
} else { /* S1 is 0 */
fprintf( stream, ",%s,", reg_names[src2] );
fprintf_filtered ( stream, ",%s,", reg_names[src2] );
}
/* Extract displacement and convert to address
@ -397,7 +397,7 @@ mem( memaddr, word1, word2, noprint )
return len;
}
fprintf( stream, "%s\t", mem_tab[i].name );
fprintf_filtered ( stream, "%s\t", mem_tab[i].name );
reg1 = reg_names[ (word1 >> 19) & 0x1f ]; /* MEMB only */
reg2 = reg_names[ (word1 >> 14) & 0x1f ];
@ -409,24 +409,24 @@ mem( memaddr, word1, word2, noprint )
case 2: /* LOAD INSTRUCTION */
if ( mode & 4 ){ /* MEMB FORMAT */
ea( memaddr, mode, reg2, reg3, word1, word2 );
fprintf( stream, ",%s", reg1 );
fprintf_filtered ( stream, ",%s", reg1 );
} else { /* MEMA FORMAT */
fprintf( stream, "0x%x", offset );
if (mode & 8) {
fprintf( stream, "(%s)", reg2 );
fprintf_filtered ( stream, "(%s)", reg2 );
}
fprintf( stream, ",%s", reg1 );
fprintf_filtered ( stream, ",%s", reg1 );
}
break;
case -2: /* STORE INSTRUCTION */
if ( mode & 4 ){ /* MEMB FORMAT */
fprintf( stream, "%s,", reg1 );
fprintf_filtered ( stream, "%s,", reg1 );
ea( memaddr, mode, reg2, reg3, word1, word2 );
} else { /* MEMA FORMAT */
fprintf( stream, "%s,0x%x", reg1, offset );
fprintf_filtered ( stream, "%s,0x%x", reg1, offset );
if (mode & 8) {
fprintf( stream, "(%s)", reg2 );
fprintf_filtered ( stream, "(%s)", reg2 );
}
}
break;
@ -435,9 +435,9 @@ mem( memaddr, word1, word2, noprint )
if ( mode & 4 ){ /* MEMB FORMAT */
ea( memaddr, mode, reg2, reg3, word1, word2 );
} else { /* MEMA FORMAT */
fprintf( stream, "0x%x", offset );
fprintf_filtered ( stream, "0x%x", offset );
if (mode & 8) {
fprintf( stream, "(%s)", reg2 );
fprintf_filtered( stream, "(%s)", reg2 );
}
}
break;
@ -652,7 +652,7 @@ reg( word1 )
fp = 0;
}
fputs( mnemp, stream );
fputs_filtered( mnemp, stream );
s1 = (word1 >> 5) & 1;
s2 = (word1 >> 6) & 1;
@ -664,7 +664,7 @@ reg( word1 )
dst = (word1 >> 19) & 0x1f;
if ( reg_tab[i].numops != 0 ){
putc( '\t', stream );
fputs_filtered( "\t", stream, 0 );
switch ( reg_tab[i].numops ){
case 1:
@ -675,19 +675,19 @@ reg( word1 )
break;
case 2:
regop( m1, s1, src, fp );
putc( ',', stream );
fputs_filtered( ",", stream );
regop( m2, s2, src2, fp );
break;
case -2:
regop( m1, s1, src, fp );
putc( ',', stream );
fputs_filtered( ",", stream );
dstop( m3, dst, fp );
break;
case 3:
regop( m1, s1, src, fp );
putc( ',', stream );
fputs_filtered( ",", stream );
regop( m2, s2, src2, fp );
putc( ',', stream );
fputs_filtered( ",", stream );
dstop( m3, dst, fp );
break;
}
@ -717,16 +717,16 @@ ea( memaddr, mode, reg2, reg3, word1, word2 )
switch (mode) {
case 4: /* (reg) */
fprintf( stream, "(%s)", reg2 );
fprintf_filtered( stream, "(%s)", reg2 );
break;
case 5: /* displ+8(ip) */
print_addr( word2+8+memaddr );
break;
case 7: /* (reg)[index*scale] */
if (scale == 1) {
fprintf( stream, "(%s)[%s]", reg2, reg3 );
fprintf_filtered( stream, "(%s)[%s]", reg2, reg3 );
} else {
fprintf( stream, "(%s)[%s*%d]",reg2,reg3,scale);
fprintf_filtered( stream, "(%s)[%s*%d]",reg2,reg3,scale);
}
break;
case 12: /* displacement */
@ -734,22 +734,22 @@ ea( memaddr, mode, reg2, reg3, word1, word2 )
break;
case 13: /* displ(reg) */
print_addr( word2 );
fprintf( stream, "(%s)", reg2 );
fprintf_filtered( stream, "(%s)", reg2 );
break;
case 14: /* displ[index*scale] */
print_addr( word2 );
if (scale == 1) {
fprintf( stream, "[%s]", reg3 );
fprintf_filtered( stream, "[%s]", reg3 );
} else {
fprintf( stream, "[%s*%d]", reg3, scale );
fprintf_filtered( stream, "[%s*%d]", reg3, scale );
}
break;
case 15: /* displ(reg)[index*scale] */
print_addr( word2 );
if (scale == 1) {
fprintf( stream, "(%s)[%s]", reg2, reg3 );
fprintf_filtered( stream, "(%s)[%s]", reg2, reg3 );
} else {
fprintf( stream, "(%s)[%s*%d]",reg2,reg3,scale );
fprintf_filtered( stream, "(%s)[%s*%d]",reg2,reg3,scale );
}
break;
default:
@ -769,25 +769,25 @@ regop( mode, spec, reg, fp )
if ( fp ){ /* FLOATING POINT INSTRUCTION */
if ( mode == 1 ){ /* FP operand */
switch ( reg ){
case 0: fputs( "fp0", stream ); break;
case 1: fputs( "fp1", stream ); break;
case 2: fputs( "fp2", stream ); break;
case 3: fputs( "fp3", stream ); break;
case 16: fputs( "0f0.0", stream ); break;
case 22: fputs( "0f1.0", stream ); break;
default: putc( '?', stream ); break;
case 0: fputs_filtered( "fp0", stream ); break;
case 1: fputs_filtered( "fp1", stream ); break;
case 2: fputs_filtered( "fp2", stream ); break;
case 3: fputs_filtered( "fp3", stream ); break;
case 16: fputs_filtered( "0f0.0", stream ); break;
case 22: fputs_filtered( "0f1.0", stream ); break;
default: fputs_filtered( "?", stream ); break;
}
} else { /* Non-FP register */
fputs( reg_names[reg], stream );
fputs_filtered( reg_names[reg], stream );
}
} else { /* NOT FLOATING POINT */
if ( mode == 1 ){ /* Literal */
fprintf( stream, "%d", reg );
fprintf_filtered( stream, "%d", reg );
} else { /* Register */
if ( spec == 0 ){
fputs( reg_names[reg], stream );
fputs_filtered( reg_names[reg], stream );
} else {
fprintf( stream, "sf%d", reg );
fprintf_filtered( stream, "sf%d", reg );
}
}
}
@ -816,7 +816,7 @@ static void
invalid( word1 )
int word1;
{
fprintf( stream, ".word\t0x%08x", word1 );
fprintf_filtered( stream, ".word\t0x%08x", word1 );
}
static void
@ -849,9 +849,9 @@ put_abs( word1, word2 )
}
if ( len == 8 ){
fprintf( stream, "%08x %08x\t", word1, word2 );
fprintf_filtered( stream, "%08x %08x\t", word1, word2 );
} else {
fprintf( stream, "%08x \t", word1 );
fprintf_filtered( stream, "%08x \t", word1 );
}
;