Delay Slot Instruction
Posted By admin On 11/04/22Delay Slot Instruction Rating: 8,7/10 6364 votes
Delay Slot Instructions
Branch Delay Slot Instruction
Field Summary
Fields Modifier and Type Field Description static int
INVALID_DEPTH_CHANGE
Fields inherited from interface ghidra.program.model.listing.CodeUnit
COMMENT_PROPERTY, DEFINED_DATA_PROPERTY, EOL_COMMENT, INSTRUCTION_PROPERTY, MNEMONIC, NO_COMMENT, PLATE_COMMENT, POST_COMMENT, PRE_COMMENT, REPEATABLE_COMMENT, SPACE_PROPERTY
Method Summary
All MethodsInstance MethodsAbstract Methods Modifier and Type Method Description void
clearFallThroughOverride()
Restores this instruction's fallthrough address back to the default fallthrough for this instruction.Address
getDefaultFallThrough()
int
getDefaultFallThroughOffset()
Get default fall-through offset in bytes from start of instruction to the fallthrough instruction.Address[]
getDefaultFlows()
Get an array of Address objects for all default flows established by the underlying instruction prototype.java.lang.String
getDefaultOperandRepresentation(int opIndex)
Get the operand representation for the given operand index without markup.java.util.List<java.lang.Object>
getDefaultOperandRepresentationList(int opIndex)
Get the operand representation for the given operand index.int
getDelaySlotDepth()
Get the number of delay slot instructions for this argument.Address
getFallFrom()
Get the Address for the instruction that fell through to this instruction.Address
getFallThrough()
Get the fallthrough for this instruction, factoring in any fallthrough override and delay slotted instructions.FlowOverride
getFlowOverride()
Returns the flow override which may have been set on this instruction.Address[]
getFlows()
Get an array of Address objects for all flows other than a fall-through.FlowType
getFlowType()
Get the flow type of this instruction (how this instruction flows to the next instruction).java.lang.Object[]
getInputObjects()
InstructionContext
getInstructionContext()
Instruction
getNext()
Get the instruction following this one in address order.RefType
getOperandRefType(int index)
Get the operand reference type for the given operand index.int
getOperandType(int opIndex)
java.lang.Object[]
getOpObjects(int opIndex)
Get objects used by this operand (Address, Scalar, Register ...)PcodeOp[]
getPcode()
Get an array of PCode operations (micro code) that this instruction performs.PcodeOp[]
getPcode(boolean includeOverrides)
Get an array of PCode operations (micro code) that this instruction performs.PcodeOp[]
getPcode(int opIndex)
Get an array of PCode operations (micro code) that a particular operand performs to compute its value.Instruction
getPrevious()
Get the instruction before this one in address order.InstructionPrototype
getPrototype()
Register
getRegister(int opIndex)
If operand is a pure Register, return the register.java.lang.Object[]
getResultObjects()
Get the Result objects produced/affected by this instruction These would probably only be Register or Addressjava.lang.String
getSeparator(int opIndex)
boolean
hasFallthrough()
Returns true if this instruction has a fall-through flow.boolean
isFallthrough()
Returns true if this instruction has no execution flow other than fall-through.boolean
isFallThroughOverridden()
Returns true if this instructions fallthrough has been overriden.boolean
isInDelaySlot()
Return true if this instruction was disassembled in a delay slotvoid
setFallThrough(Address addr)
Overrides the instruction's default fallthrough address to the given address.void
setFlowOverride(FlowOverride flowOverride)
Methods inherited from interface ghidra.program.model.listing.CodeUnit
addMnemonicReference, addOperandReference, compareTo, contains, getAddress, getAddressString, getBytes, getBytesInCodeUnit, getComment, getCommentAsArray, getExternalReference, getIntProperty, getLabel, getLength, getMaxAddress, getMinAddress, getMnemonicReferences, getMnemonicString, getNumOperands, getObjectProperty, getOperandReferences, getPrimaryReference, getPrimarySymbol, getProgram, getReferenceIteratorTo, getReferencesFrom, getScalar, getStringProperty, getSymbols, getVoidProperty, hasProperty, isSuccessor, propertyNames, removeExternalReference, removeMnemonicReference, removeOperandReference, removeProperty, setComment, setCommentAsArray, setPrimaryMemoryReference, setProperty, setProperty, setProperty, setProperty, setRegisterReference, setStackReference, visitProperty
Methods inherited from interface ghidra.program.model.mem.MemBuffer
getAddress, getBigInteger, getByte, getBytes, getInt, getLong, getMemory, getShort, getUnsignedByte, getUnsignedInt, getUnsignedShort, getVarLengthInt, getVarLengthUnsignedInt, isBigEndian, isInitializedMemory
Methods inherited from interface ghidra.program.model.lang.ProcessorContext
clearRegister, setRegisterValue, setValue
Methods inherited from interface ghidra.program.model.lang.ProcessorContextView
getBaseContextRegister, getRegister, getRegisters, getRegisterValue, getValue, hasValue
- Information and translations of delay slot in the most comprehensive dictionary definitions resource on the web. A delay slot is an instruction slot that gets.
- In computer architecture, a delay slot is an instruction slot being executed without the effects of a preceding instruction. The most common form is a single arbitrary instruction located immediately after a branch instruction on a RISC or DSP architecture; this instruction will execute even if the preceding branch is taken.
- On the MIPS architecture, jump and branch instructions have a 'delay slot'. This means that the instruction after the jump or branch instruction is executed before the jump or branch is executed.
Delay slot instruction Home › Forums › MIPS Insider › Delay slot instruction This topic contains 1 reply, has 2 voices, and was last updated by ChrisImgtec 3 years, 4 months ago. In the branch delay slot, we edit the return address so that when function1 returns, it resumes execution at resume rather than nominalreturn, thereby avoiding having to execute another branch instruction.