mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-29 20:05:35 +02:00
Changed the format of the disassembly view's output.
This commit is contained in:
parent
a4401df722
commit
736dbc1bec
2 changed files with 29 additions and 4 deletions
|
@ -1,3 +1,6 @@
|
|||
2002-10-11 Mikhail Khodjaiants
|
||||
* DisassemblyStorage.java: Changed the format of the disassembly view's output.
|
||||
|
||||
2002-10-10 Mikhail Khodjaiants
|
||||
* CVariable.java: Made the 'fChanged' field protected to access to it from the derived class (CRegister).
|
||||
* CRegister.java: Added the 'hasValueChanged' method to 'CRegister'.
|
||||
|
|
|
@ -8,6 +8,7 @@ package org.eclipse.cdt.debug.internal.core;
|
|||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.eclipse.cdt.debug.core.IDisassemblyStorage;
|
||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
|
||||
|
@ -144,9 +145,23 @@ public class DisassemblyStorage implements IDisassemblyStorage
|
|||
private void createContent()
|
||||
{
|
||||
StringBuffer lines = new StringBuffer();
|
||||
int maxFunctionName = 0;
|
||||
long maxOffset = 0;
|
||||
for ( int i = 0; i < fInstructions.length; ++i )
|
||||
{
|
||||
lines.append( getInstructionString( fInstructions[i] ) );
|
||||
if ( fInstructions[i].getFuntionName().length() > maxFunctionName )
|
||||
{
|
||||
maxFunctionName = fInstructions[i].getFuntionName().length();
|
||||
}
|
||||
if ( fInstructions[i].getOffset() > maxOffset )
|
||||
{
|
||||
maxOffset = fInstructions[i].getOffset();
|
||||
}
|
||||
}
|
||||
int instrPos = calculateInstructionPosition( maxFunctionName, maxOffset );
|
||||
for ( int i = 0; i < fInstructions.length; ++i )
|
||||
{
|
||||
lines.append( getInstructionString( fInstructions[i], instrPos ) );
|
||||
}
|
||||
fInputStream = new ByteArrayInputStream( lines.toString().getBytes() );
|
||||
}
|
||||
|
@ -160,12 +175,14 @@ public class DisassemblyStorage implements IDisassemblyStorage
|
|||
}
|
||||
}
|
||||
|
||||
private String getInstructionString( ICDIInstruction instruction )
|
||||
private String getInstructionString( ICDIInstruction instruction, int instrPosition )
|
||||
{
|
||||
char[] spaces= new char[instrPosition];
|
||||
Arrays.fill( spaces, ' ' );
|
||||
StringBuffer sb = new StringBuffer();
|
||||
if ( instruction != null )
|
||||
{
|
||||
sb .append( CDebugUtils.toHexAddressString( instruction.getAdress() ) );
|
||||
sb.append( CDebugUtils.toHexAddressString( instruction.getAdress() ) );
|
||||
sb.append( ' ' );
|
||||
if ( instruction.getFuntionName() != null && instruction.getFuntionName().length() > 0 )
|
||||
{
|
||||
|
@ -177,11 +194,16 @@ public class DisassemblyStorage implements IDisassemblyStorage
|
|||
sb.append( instruction.getOffset() );
|
||||
}
|
||||
sb.append( ">:" );
|
||||
sb.append( '\t' );
|
||||
sb.append( spaces, 0, instrPosition - sb.length() );
|
||||
}
|
||||
sb.append( instruction.getInstruction() );
|
||||
sb.append( '\n' );
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private int calculateInstructionPosition( int maxFunctionName, long maxOffset )
|
||||
{
|
||||
return ( 16 + maxFunctionName + Long.toString( maxOffset ).length() );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue