Package ghidra.app.cmd.disassemble
Class X86_64DisassembleCommand
- java.lang.Object
-
- ghidra.framework.cmd.BackgroundCommand
-
- ghidra.app.cmd.disassemble.DisassembleCommand
-
- ghidra.app.cmd.disassemble.X86_64DisassembleCommand
-
- All Implemented Interfaces:
Command
public class X86_64DisassembleCommand extends DisassembleCommand
Command object for performing 64-/32-bit x86 disassemblyThis generally only comes up when debugging, since there can be multiple images loaded by an x86-64 target. For WoW64, the images may be mixed. Thus, this command allows you to disassemble 64-bit or 32-bit instructions whenever the language is set to 64-bit x86.
WARNING: If used in static programs, i.e., not debug traces, there are some potential remaining issues, particularly dealing with stored context and follow-on disassembly -- typically called for by the analyzers. In most cases, this does not matter, since mixed 64- and 32-bit code in a single image is likely a niche case and can be handled via careful commands from the user. Nevertheless, TODO: Rework x86-64 analyzers to call the correct mode of disassembly.
-
-
Field Summary
-
Fields inherited from class ghidra.app.cmd.disassemble.DisassembleCommand
disassemblyPerformed, languageError, nonExecutableStart, startSet, unalignedStart, useDefaultRepeatPatternBehavior
-
-
Constructor Summary
Constructors Constructor Description X86_64DisassembleCommand(Address start, AddressSetView restrictedSet, boolean size32Mode)
Constructor for X86_64DisassembleCommand.X86_64DisassembleCommand(AddressSetView startSet, AddressSetView restrictedSet, boolean size32Mode)
Constructor for X86_64DisassembleCommand.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static AddressSet
alignSet(int alignment, AddressSetView set)
boolean
applyTo(DomainObject obj, TaskMonitor monitor)
Method called when this command is to apply changes to the given domain object.java.lang.String
getName()
Returns the name of this command.void
setInitialContext(RegisterValue initialContextValue)
Allows a specified initial context to be used at all start points.void
setSeedContext(DisassemblerContextImpl seedContext)
Allows the disassembler context to be seeded for the various disassembly start points which may be encountered using the future flow state of the specified seedContext.-
Methods inherited from class ghidra.app.cmd.disassemble.DisassembleCommand
doDisassembly, doDisassemblySeeds, enableCodeAnalysis, getDisassembledAddressSet, getStatusMsg
-
Methods inherited from class ghidra.framework.cmd.BackgroundCommand
applyTo, canCancel, dispose, hasProgress, isModal, setStatusMsg, taskCompleted, toString
-
-
-
-
Constructor Detail
-
X86_64DisassembleCommand
public X86_64DisassembleCommand(AddressSetView startSet, AddressSetView restrictedSet, boolean size32Mode)
Constructor for X86_64DisassembleCommand.- Parameters:
startSet
- set of addresses to be the start of disassembly. The Command object will attempt to start a disassembly at each address in this set.restrictedSet
- addresses that can be disassembled. a null set implies no restrictions.size32Mode
- pass true if disassembling in 32-bit compatibility mode, otherwise normal 64-bit disassembly will be performed.
-
X86_64DisassembleCommand
public X86_64DisassembleCommand(Address start, AddressSetView restrictedSet, boolean size32Mode)
Constructor for X86_64DisassembleCommand.- Parameters:
start
- address to be the start of a disassembly.restrictedSet
- addresses that can be disassembled. a null set implies no restrictions.size32Mode
- pass true if disassembling in 32-bit compatibility mode, otherwise normal 64-bit disassembly will be performed.
-
-
Method Detail
-
getName
public java.lang.String getName()
Description copied from interface:Command
Returns the name of this command.- Specified by:
getName
in interfaceCommand
- Overrides:
getName
in classBackgroundCommand
- Returns:
- the name of this command
-
setSeedContext
public void setSeedContext(DisassemblerContextImpl seedContext)
Description copied from class:DisassembleCommand
Allows the disassembler context to be seeded for the various disassembly start points which may be encountered using the future flow state of the specified seedContext. Any initial context set via theDisassembleCommand.setInitialContext(RegisterValue)
method will take precedence when combined with any seed values. The seedContext should remain unchanged while disassembler command is actively running.- Overrides:
setSeedContext
in classDisassembleCommand
- Parameters:
seedContext
- seed context or null
-
setInitialContext
public void setInitialContext(RegisterValue initialContextValue)
Description copied from class:DisassembleCommand
Allows a specified initial context to be used at all start points. This value will take precedence when combined with any individual seed context values specified by theDisassembleCommand.setSeedContext(DisassemblerContextImpl)
method. The defaultSeedContext should remain unchanged while disassembler command is actively running.- Overrides:
setInitialContext
in classDisassembleCommand
- Parameters:
initialContextValue
- the initial context value to set or null to clear it
-
alignSet
public static AddressSet alignSet(int alignment, AddressSetView set) throws CancelledException
- Throws:
CancelledException
-
applyTo
public boolean applyTo(DomainObject obj, TaskMonitor monitor)
Description copied from class:BackgroundCommand
Method called when this command is to apply changes to the given domain object. A monitor is provided to display status information about the command as it executes in the background.- Overrides:
applyTo
in classDisassembleCommand
- Parameters:
obj
- domain object that will be affected by the commandmonitor
- monitor to show progress of the command- Returns:
- true if the command applied successfully
-
-