Package ghidra.program.model.mem
Class ByteMemBufferImpl
- java.lang.Object
-
- ghidra.program.model.mem.ByteMemBufferImpl
-
- All Implemented Interfaces:
MemBuffer
public class ByteMemBufferImpl extends java.lang.Object implements MemBuffer
Simple byte buffer implementation of the memBuffer. Since there is no actual memory object associated with this object, the getMemory method is not implemented and all gets are limited to the bytes supplied during construction.
-
-
Constructor Summary
Constructors Constructor Description ByteMemBufferImpl(Address addr, byte[] bytes, boolean isBigEndian)Construct a ByteMemBufferImpl object
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AddressgetAddress()Get the Address which corresponds to the offset 0.java.math.BigIntegergetBigInteger(int offset, int size, boolean signed)returns the value at the given offset, taking into account the endianess.bytegetByte(int offset)Get one byte from memory at the current position plus offset.intgetBytes(byte[] b, int offset)Readsb.lengthbytes from this memory buffer starting at the address of this memory buffer plus the given memoryBufferOffset from that position.intgetInt(int offset)returns the int at the given offset, taking into account the endianess.intgetLength()Get number of bytes contained within bufferlonggetLong(int offset)returns the long at the given offset, taking into account the endianess.MemorygetMemory()Get the Memory object actually used by the MemBuffer.shortgetShort(int offset)returns the short at the given offset, taking into account the endianess.booleanisBigEndian()Returns true if the underlying bytes are in big-endian order, false if they are little endian.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ghidra.program.model.mem.MemBuffer
getUnsignedByte, getUnsignedInt, getUnsignedShort, getVarLengthInt, getVarLengthUnsignedInt, isInitializedMemory
-
-
-
-
Constructor Detail
-
ByteMemBufferImpl
public ByteMemBufferImpl(Address addr, byte[] bytes, boolean isBigEndian)
Construct a ByteMemBufferImpl object- Parameters:
addr- the address to associate with the bytesbytes- the data that normally would be coming from memory.isBigEndian- true for BigEndian, false for LittleEndian.
-
-
Method Detail
-
getLength
public int getLength()
Get number of bytes contained within buffer- Returns:
- byte count
-
getAddress
public Address getAddress()
Description copied from interface:MemBufferGet the Address which corresponds to the offset 0.- Specified by:
getAddressin interfaceMemBuffer- Returns:
- the current address of offset 0.
-
getByte
public byte getByte(int offset) throws MemoryAccessExceptionDescription copied from interface:MemBufferGet one byte from memory at the current position plus offset.- Specified by:
getBytein interfaceMemBuffer- Parameters:
offset- the displacement from the current position.- Returns:
- the data at offset from the current position.
- Throws:
MemoryAccessException- if memory cannot be read at the specified offset
-
getMemory
public Memory getMemory()
Description copied from interface:MemBufferGet the Memory object actually used by the MemBuffer.
-
getBytes
public int getBytes(byte[] b, int offset)Description copied from interface:MemBufferReadsb.lengthbytes from this memory buffer starting at the address of this memory buffer plus the given memoryBufferOffset from that position. The actual number of bytes may be fewer if bytes can't be read.- Specified by:
getBytesin interfaceMemBuffer- Parameters:
b- the buffer into which bytes will be placedoffset- the offset in this memory buffer from which to start reading bytes.- Returns:
- the number of bytes read which may be fewer than b.length if available bytes are exhausted or no bytes are available at the specified offset.
-
isBigEndian
public boolean isBigEndian()
Description copied from interface:MemBufferReturns true if the underlying bytes are in big-endian order, false if they are little endian.- Specified by:
isBigEndianin interfaceMemBuffer- Returns:
- true if the underlying bytes are in big-endian order, false if they are little endian.
-
getShort
public short getShort(int offset) throws MemoryAccessExceptionDescription copied from interface:MemBufferreturns the short at the given offset, taking into account the endianess.- Specified by:
getShortin interfaceMemBuffer- Parameters:
offset- the offset from the membuffers origin (the address that it is set at)- Returns:
- the short at the given offset, taking into account the endianess.
- Throws:
MemoryAccessException- if a 2-byte short value cannot be read at the specified offset
-
getInt
public int getInt(int offset) throws MemoryAccessExceptionDescription copied from interface:MemBufferreturns the int at the given offset, taking into account the endianess.- Specified by:
getIntin interfaceMemBuffer- Parameters:
offset- the offset from the membuffers origin (the address that it is set at)- Returns:
- the int at the given offset, taking into account the endianess.
- Throws:
MemoryAccessException- if a 4-byte integer value cannot be read at the specified offset
-
getLong
public long getLong(int offset) throws MemoryAccessExceptionDescription copied from interface:MemBufferreturns the long at the given offset, taking into account the endianess.- Specified by:
getLongin interfaceMemBuffer- Parameters:
offset- the offset from the membuffers origin (the address that it is set at)- Returns:
- the long at the given offset, taking into account the endianess.
- Throws:
MemoryAccessException- if a 8-byte long value cannot be read at the specified offset
-
getBigInteger
public java.math.BigInteger getBigInteger(int offset, int size, boolean signed) throws MemoryAccessExceptionDescription copied from interface:MemBufferreturns the value at the given offset, taking into account the endianess.- Specified by:
getBigIntegerin interfaceMemBuffer- Parameters:
offset- the offset from the membuffers origin (the address that it is set at)size- the number of bytes to include in the valuesigned- true if value should be treated as a signed twos-compliment value.- Returns:
- the value at the given offset, taking into account the endianess.
- Throws:
MemoryAccessException- if the request size value cannot be read at the specified offset
-
-