OpenASIP
2.0
|
#include <LEDataSection.hh>
Public Member Functions | |
virtual | ~LEDataSection () |
virtual SectionType | type () const |
virtual void | writeValue (Word index, Word numOfMAUs, unsigned long value) |
virtual void | writeValue (Word index, Word numOfMAUs, signed long value) |
![]() | |
virtual | ~DataSection () |
virtual Byte | byte (const Chunk *chunk) const |
virtual Byte | byte (Word offset) const |
virtual void | addByte (Byte aByte) |
virtual MinimumAddressableUnit | MAU (Word index) const |
virtual void | addMAU (MinimumAddressableUnit aMAU) |
virtual Word | length () const |
virtual void | setDataLength (Word length) |
virtual bool | isDataSection () const override |
![]() | |
virtual | ~UDataSection () |
![]() | |
virtual bool | isChunkable () const |
virtual Chunk * | chunk (SectionOffset offset) const |
virtual void | assureInSection (SectionOffset offset) const |
virtual | ~RawSection () |
bool | empty () const |
virtual void | setLengthInMAUs (Word length) |
virtual Word | lengthInMAUs () const |
virtual Word | bytesToMAUs (Word byteCount) const |
virtual Word | MAUsToBytes (Word mauCount) const |
virtual Word | chunkToMAUIndex (const Chunk *chunk) const |
Word | referredChunkCount () const |
Chunk * | referredChunk (Word index) const |
bool | belongsToSection (const Chunk *chunk) const |
![]() | |
virtual | ~Section () |
bool | isProgramSection () const |
bool | isAuxSection () const |
virtual void | addElement (SectionElement *element) |
virtual void | setElement (Word index, SectionElement *element) |
SectionElement * | element (Word index) const |
Word | elementCount () const |
void | setFlagNoBits () |
void | unsetFlagNoBits () |
bool | noBits () const |
bool | vLen () const |
Byte | flags () const |
void | setFlags (Byte flagByte) |
void | setStartingAddress (AddressImage address) |
AddressImage | startingAddress () const |
void | setLink (const ReferenceManager::SafePointer *aLink) |
void | setLink (Section *aLink) |
Section * | link () const |
void | setASpace (const ReferenceManager::SafePointer *addrSpace) |
void | setASpace (ASpaceElement *addrSpace) |
ASpaceElement * | aSpace () const |
void | setName (const ReferenceManager::SafePointer *sectionName) |
void | setName (Chunk *sectionName) |
Chunk * | name () const |
virtual bool | isCodeSection () const |
![]() | |
virtual | ~SafePointable () |
Protected Member Functions | |
LEDataSection (bool init) | |
virtual Section * | clone () const |
![]() | |
DataSection (bool init) | |
virtual void | setByte (Word offset, Byte aByte) |
![]() | |
UDataSection (bool init) | |
![]() | |
RawSection () | |
![]() | |
Section () | |
void | setFlagVLen () |
void | unsetFlagVLen () |
![]() | |
SafePointable () | |
Static Private Attributes | |
static LEDataSection | proto_ |
Prototype instance of section. More... | |
Additional Inherited Members | |
![]() | |
enum | SectionType { ST_NULL = 0x00, ST_STRTAB = 0x01, ST_SYMTAB = 0x02, ST_DEBUG = 0x03, ST_RELOC = 0x04, ST_LINENO = 0x05, ST_NOTE = 0x06, ST_ADDRSP = 0x07, ST_MR = 0x0A, ST_CODE = 0x81, ST_DATA = 0x82, ST_UDATA = 0x83, ST_LEDATA = 0x84, ST_DUMMY = 0xff } |
enum | SectionFlag { SF_VLEN = 0x40, SF_NOBITS = 0x80 } |
![]() | |
static Section * | createSection (SectionType type) |
static bool | isProgramSection (SectionType type) |
![]() | |
static void | registerSection (const Section *section) |
Data section for initialized data in Little-Endian ADFs
Derives from big-endian data section so, this is extension of DataSection.
Definition at line 52 of file LEDataSection.hh.
|
virtual |
|
protected |
Constructor.
init | true if registeration is wanted |
Definition at line 51 of file LEDataSection.cc.
References TPEF::Section::registerSection(), TPEF::Section::unsetFlagNoBits(), and TPEF::Section::unsetFlagVLen().
Referenced by clone().
|
protectedvirtual |
Creates an instance of DataSection.
Reimplemented from TPEF::DataSection.
Definition at line 83 of file LEDataSection.cc.
References LEDataSection().
|
virtual |
Returns section's type.
Reimplemented from TPEF::DataSection.
Definition at line 73 of file LEDataSection.cc.
References TPEF::Section::ST_LEDATA.
|
virtual |
Writes signed value to data section.
For example, when we call writeValue(0, 4, -3) and MAU is 2bit start of data section will be 11 11 11 01.
MAUs are stored in data section like this: 00000011 000000011 00000011 00000001 (one MAU per byte)
If we call writeValue(0, 4, -3) and MAU is 10bit start of data section will be 1111111111 1111111111 1111111111 1111111101.
However the MAUs are stored in data section like this:
00000011 11111111|00000011 11111111|00000011 11111111|00000011 11111101| MAU1 | MAU2 | MAU3 | MAU4 |
index | MAU offset to section where to we write value. |
numOfMAUs | Number of MAUs that we use for storing value. |
value | Value to write. |
Reimplemented from TPEF::DataSection.
Definition at line 161 of file LEDataSection.cc.
References TPEF::Section::aSpace(), BYTE_BITWIDTH, TPEF::ASpaceElement::MAU(), TPEF::RawSection::MAUsToBytes(), and TPEF::DataSection::setByte().
|
virtual |
Writes unsigned value to data section.
Value is aligned to field as normal big endian value least significant bit is stored to last bit of last MAU.
If we call writeValue(0, 4, 3) and MAU is 2bit start of data section will be 00 00 00 11.
However the MAUs are stored in data section like this: 00000000|000000000|00000000|00000011 (one MAU per byte) MAU1 | MAU2 | MAU3 | MAU4
index | MAU offset to section where to we write value. |
numOfMAUs | Number of MAUs that we use for storing value. |
value | Value to write. |
Reimplemented from TPEF::DataSection.
Definition at line 107 of file LEDataSection.cc.
References TPEF::Section::aSpace(), BYTE_BITWIDTH, TPEF::ASpaceElement::MAU(), TPEF::RawSection::MAUsToBytes(), and TPEF::DataSection::setByte().
|
staticprivate |
Prototype instance of section.
Definition at line 66 of file LEDataSection.hh.