OpenASIP
2.2
Loading...
Searching...
No Matches
src
base
tpef
TPEFHeaders.hh
Go to the documentation of this file.
1
/*
2
Copyright (c) 2002-2009 Tampere University.
3
4
This file is part of TTA-Based Codesign Environment (TCE).
5
6
Permission is hereby granted, free of charge, to any person obtaining a
7
copy of this software and associated documentation files (the "Software"),
8
to deal in the Software without restriction, including without limitation
9
the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
and/or sell copies of the Software, and to permit persons to whom the
11
Software is furnished to do so, subject to the following conditions:
12
13
The above copyright notice and this permission notice shall be included in
14
all copies or substantial portions of the Software.
15
16
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
DEALINGS IN THE SOFTWARE.
23
*/
24
/**
25
* @file TPEFHeaders.hh
26
*
27
* TPEF file and section header related offsets and
28
* some other TPEF binary file related values.
29
*
30
* @author Mikael Lepistö 2004 (tmlepist-no.spam-cs.tut.fi)
31
*
32
* @note rating: yellow
33
*/
34
35
#ifndef TTA_TPEF_HEADERS
36
#define TTA_TPEF_HEADERS
37
38
#include "
TPEFBaseType.hh
"
39
40
namespace
TPEF
{
41
namespace
TPEFHeaders {
42
43
/// File format identification mark (TPEF version 1).
44
/// See TPEF documentation for more info.
45
const
Byte
FH_ID_BYTES
[] = {
46
0x7f, 0x54, 0x54, 0x41, 0x2d, 0x50, 0x46, 0x00, 0x01, 0x0a
47
};
48
49
/// Size of file identification code.
50
const
Byte
FH_ID_SIZE
= 10;
51
/// Size of file header.
52
const
HalfWord
FH_HEADER_SIZE
= 26;
53
/// Suze of section header.
54
const
HalfWord
SH_HEADER_SIZE
= 32;
55
56
enum
TPEFVersion
{
57
TPEF_V1
= 0x01,
///< Initial TPEF version.
58
TPEF_V2
= 0x02
///< Support for over 255 Buses, FUs, RFs.
59
};
60
61
/**
62
* Offsets of file header.
63
*/
64
enum
FileHeaderOffset
{
65
FH_ID
= 0,
///< File identification code.
66
FH_ARCH
= 10,
///< Architecture template.
67
FH_TYPE
= 11,
///< Type of TTA program.
68
FH_SHOFF
= 12,
///< Offset to first section header.
69
FH_SIZE
= 16,
///< File header size.
70
FH_SHSIZE
= 18,
///< Size of section header entry.
71
FH_SHNUM
= 20,
///< Number of section headers.
72
FH_SHSTRTAB
= 22
///< Offset to header of string table.
73
};
74
75
/**
76
* Offsets of section header.
77
*/
78
enum
SectionHeaderOffset
{
79
SH_NAME
= 0,
///< Section offset to name.
80
SH_TYPE
= 4,
///< Type of section.
81
SH_FLAGS
= 5,
///< Flags of section.
82
SH_ADDR
= 6,
///< Starting memory address of program section.
83
SH_OFFSET
= 10,
///< Offset to section data.
84
SH_SIZE
= 14,
///< Size of section data.
85
SH_ID
= 18,
///< Section identification code.
86
SH_ASPACE
= 20,
///< Section address space identifier.
87
SH_PADDING
= 21,
///< Padding, must be zero.
88
SH_LINK
= 22,
///< Section identifier link.
89
SH_INFO
= 24,
///< Section specific information, usually zero.
90
SH_ENTSIZE
= 28
///< Size of section elements (if fixed size).
91
};
92
93
/**
94
* Values for SymbolElement other field.
95
*/
96
enum
SymbolOtherValues
{
97
STO_ABS
= 0x80
///< Section is absolute, not relocating.
98
};
99
100
/**
101
* Values for RelocationElement type field
102
*/
103
enum
RelocTypeValues
{
104
STF_RELOCATION_TYPE_MASK
= 0x0F,
///< Mask for getting reloc type.
105
STF_CHUNK
= 0x80
///< Relocation applied to chunk(1)
106
///< or complete address(0).
107
};
108
109
/**
110
* InstructionAnnotation flags and masks.
111
*/
112
enum
InstructionAnnotationMasks
{
113
IANNOTE_CONTINUATION
= 0x80,
///< If there is more annotations.
114
IANNOTE_SIZE
= 0x7f
///< Size of payload of annotation.
115
};
116
117
/**
118
* Instruction attribute flags and masks.
119
*/
120
enum
InstructionAttributeField
{
121
IA_TYPE
= 0x01,
///< Instruction type: move (0), immediate (1).
122
IA_END
= 0x02,
///< Is end of instruction.
123
IA_ANNOTE
= 0x04,
///< Contains annotation.
124
IA_EMPTY
= 0x08,
///< Empty instruction.
125
IA_IMMSIZE
= 0xf0,
///< Immediade size mask.
126
IA_MGUARD
= 0x10
///< Is conditional move or unconditional move.
127
};
128
129
/**
130
* Masks for getting source and destination fields from instruction.
131
*/
132
enum
InstructionFieldType
{
133
IE_SRC_TYPE_MASK
= 0x0c,
///< Instruction source type mask.
134
IE_DST_TYPE_MASK
= 0x30,
///< Instruction destination type mask.
135
IE_GUARD_TYPE_MASK
= 0x80,
///< If (1) guard points to GPR,(0) to FU.
136
MVS_NULL
= 0x00,
///< Illegal source.
137
MVS_RF
= 0x04,
///< Source is RF.
138
MVS_IMM
= 0x08,
///< Source is immediate.
139
MVS_UNIT
= 0x0c,
///< Source is FU.
140
MVD_NULL
= 0x00,
///< Illegal destination.
141
MVD_RF
= 0x10,
///< Destination is RF.
142
MVD_ILLEGAL
= 0x20,
///< Illegal destination.
143
MVD_UNIT
= 0x30,
///< Destination is FU.
144
MVG_UNIT
= 0x00,
///< Guard is FU.
145
MVG_RF
= 0x80,
///< Guard is RF.
146
IE_GUARD_INV_MASK
= 0x40
///< Guard inverted (1) means inverted.
147
};
148
149
}
// namespace TPEFHeaders;
150
}
// namespace TPEF;
151
152
#endif
Byte
unsigned char Byte
Definition
BaseType.hh:116
TPEFBaseType.hh
TPEF::TPEFHeaders::FH_ID_BYTES
const Byte FH_ID_BYTES[]
File format identification mark (TPEF version 1). See TPEF documentation for more info.
Definition
TPEFHeaders.hh:45
TPEF::TPEFHeaders::InstructionAttributeField
InstructionAttributeField
Definition
TPEFHeaders.hh:120
TPEF::TPEFHeaders::IA_END
@ IA_END
Is end of instruction.
Definition
TPEFHeaders.hh:122
TPEF::TPEFHeaders::IA_MGUARD
@ IA_MGUARD
Is conditional move or unconditional move.
Definition
TPEFHeaders.hh:126
TPEF::TPEFHeaders::IA_TYPE
@ IA_TYPE
Instruction type: move (0), immediate (1).
Definition
TPEFHeaders.hh:121
TPEF::TPEFHeaders::IA_ANNOTE
@ IA_ANNOTE
Contains annotation.
Definition
TPEFHeaders.hh:123
TPEF::TPEFHeaders::IA_IMMSIZE
@ IA_IMMSIZE
Immediade size mask.
Definition
TPEFHeaders.hh:125
TPEF::TPEFHeaders::IA_EMPTY
@ IA_EMPTY
Empty instruction.
Definition
TPEFHeaders.hh:124
TPEF::TPEFHeaders::RelocTypeValues
RelocTypeValues
Definition
TPEFHeaders.hh:103
TPEF::TPEFHeaders::STF_RELOCATION_TYPE_MASK
@ STF_RELOCATION_TYPE_MASK
Mask for getting reloc type.
Definition
TPEFHeaders.hh:104
TPEF::TPEFHeaders::STF_CHUNK
@ STF_CHUNK
Relocation applied to chunk(1) or complete address(0).
Definition
TPEFHeaders.hh:105
TPEF::TPEFHeaders::FileHeaderOffset
FileHeaderOffset
Definition
TPEFHeaders.hh:64
TPEF::TPEFHeaders::FH_ARCH
@ FH_ARCH
Architecture template.
Definition
TPEFHeaders.hh:66
TPEF::TPEFHeaders::FH_SHSIZE
@ FH_SHSIZE
Size of section header entry.
Definition
TPEFHeaders.hh:70
TPEF::TPEFHeaders::FH_SHSTRTAB
@ FH_SHSTRTAB
Offset to header of string table.
Definition
TPEFHeaders.hh:72
TPEF::TPEFHeaders::FH_ID
@ FH_ID
File identification code.
Definition
TPEFHeaders.hh:65
TPEF::TPEFHeaders::FH_SHNUM
@ FH_SHNUM
Number of section headers.
Definition
TPEFHeaders.hh:71
TPEF::TPEFHeaders::FH_SHOFF
@ FH_SHOFF
Offset to first section header.
Definition
TPEFHeaders.hh:68
TPEF::TPEFHeaders::FH_TYPE
@ FH_TYPE
Type of TTA program.
Definition
TPEFHeaders.hh:67
TPEF::TPEFHeaders::FH_SIZE
@ FH_SIZE
File header size.
Definition
TPEFHeaders.hh:69
TPEF::TPEFHeaders::SectionHeaderOffset
SectionHeaderOffset
Definition
TPEFHeaders.hh:78
TPEF::TPEFHeaders::SH_LINK
@ SH_LINK
Section identifier link.
Definition
TPEFHeaders.hh:88
TPEF::TPEFHeaders::SH_FLAGS
@ SH_FLAGS
Flags of section.
Definition
TPEFHeaders.hh:81
TPEF::TPEFHeaders::SH_ASPACE
@ SH_ASPACE
Section address space identifier.
Definition
TPEFHeaders.hh:86
TPEF::TPEFHeaders::SH_OFFSET
@ SH_OFFSET
Offset to section data.
Definition
TPEFHeaders.hh:83
TPEF::TPEFHeaders::SH_ID
@ SH_ID
Section identification code.
Definition
TPEFHeaders.hh:85
TPEF::TPEFHeaders::SH_INFO
@ SH_INFO
Section specific information, usually zero.
Definition
TPEFHeaders.hh:89
TPEF::TPEFHeaders::SH_ADDR
@ SH_ADDR
Starting memory address of program section.
Definition
TPEFHeaders.hh:82
TPEF::TPEFHeaders::SH_SIZE
@ SH_SIZE
Size of section data.
Definition
TPEFHeaders.hh:84
TPEF::TPEFHeaders::SH_NAME
@ SH_NAME
Section offset to name.
Definition
TPEFHeaders.hh:79
TPEF::TPEFHeaders::SH_TYPE
@ SH_TYPE
Type of section.
Definition
TPEFHeaders.hh:80
TPEF::TPEFHeaders::SH_ENTSIZE
@ SH_ENTSIZE
Size of section elements (if fixed size).
Definition
TPEFHeaders.hh:90
TPEF::TPEFHeaders::SH_PADDING
@ SH_PADDING
Padding, must be zero.
Definition
TPEFHeaders.hh:87
TPEF::TPEFHeaders::SymbolOtherValues
SymbolOtherValues
Definition
TPEFHeaders.hh:96
TPEF::TPEFHeaders::STO_ABS
@ STO_ABS
Section is absolute, not relocating.
Definition
TPEFHeaders.hh:97
TPEF::TPEFHeaders::FH_ID_SIZE
const Byte FH_ID_SIZE
Size of file identification code.
Definition
TPEFHeaders.hh:50
TPEF::TPEFHeaders::InstructionFieldType
InstructionFieldType
Definition
TPEFHeaders.hh:132
TPEF::TPEFHeaders::IE_GUARD_TYPE_MASK
@ IE_GUARD_TYPE_MASK
If (1) guard points to GPR,(0) to FU.
Definition
TPEFHeaders.hh:135
TPEF::TPEFHeaders::IE_GUARD_INV_MASK
@ IE_GUARD_INV_MASK
Guard inverted (1) means inverted.
Definition
TPEFHeaders.hh:146
TPEF::TPEFHeaders::MVG_RF
@ MVG_RF
Guard is RF.
Definition
TPEFHeaders.hh:145
TPEF::TPEFHeaders::MVD_UNIT
@ MVD_UNIT
Destination is FU.
Definition
TPEFHeaders.hh:143
TPEF::TPEFHeaders::MVD_NULL
@ MVD_NULL
Illegal destination.
Definition
TPEFHeaders.hh:140
TPEF::TPEFHeaders::MVS_IMM
@ MVS_IMM
Source is immediate.
Definition
TPEFHeaders.hh:138
TPEF::TPEFHeaders::MVD_RF
@ MVD_RF
Destination is RF.
Definition
TPEFHeaders.hh:141
TPEF::TPEFHeaders::MVS_UNIT
@ MVS_UNIT
Source is FU.
Definition
TPEFHeaders.hh:139
TPEF::TPEFHeaders::MVS_NULL
@ MVS_NULL
Illegal source.
Definition
TPEFHeaders.hh:136
TPEF::TPEFHeaders::MVG_UNIT
@ MVG_UNIT
Guard is FU.
Definition
TPEFHeaders.hh:144
TPEF::TPEFHeaders::MVD_ILLEGAL
@ MVD_ILLEGAL
Illegal destination.
Definition
TPEFHeaders.hh:142
TPEF::TPEFHeaders::IE_DST_TYPE_MASK
@ IE_DST_TYPE_MASK
Instruction destination type mask.
Definition
TPEFHeaders.hh:134
TPEF::TPEFHeaders::MVS_RF
@ MVS_RF
Source is RF.
Definition
TPEFHeaders.hh:137
TPEF::TPEFHeaders::IE_SRC_TYPE_MASK
@ IE_SRC_TYPE_MASK
Instruction source type mask.
Definition
TPEFHeaders.hh:133
TPEF::TPEFHeaders::SH_HEADER_SIZE
const HalfWord SH_HEADER_SIZE
Suze of section header.
Definition
TPEFHeaders.hh:54
TPEF::TPEFHeaders::TPEFVersion
TPEFVersion
Definition
TPEFHeaders.hh:56
TPEF::TPEFHeaders::TPEF_V1
@ TPEF_V1
Initial TPEF version.
Definition
TPEFHeaders.hh:57
TPEF::TPEFHeaders::TPEF_V2
@ TPEF_V2
Support for over 255 Buses, FUs, RFs.
Definition
TPEFHeaders.hh:58
TPEF::TPEFHeaders::FH_HEADER_SIZE
const HalfWord FH_HEADER_SIZE
Size of file header.
Definition
TPEFHeaders.hh:52
TPEF::TPEFHeaders::InstructionAnnotationMasks
InstructionAnnotationMasks
Definition
TPEFHeaders.hh:112
TPEF::TPEFHeaders::IANNOTE_SIZE
@ IANNOTE_SIZE
Size of payload of annotation.
Definition
TPEFHeaders.hh:114
TPEF::TPEFHeaders::IANNOTE_CONTINUATION
@ IANNOTE_CONTINUATION
If there is more annotations.
Definition
TPEFHeaders.hh:113
TPEF
Definition
Assembler.hh:43
Generated by
1.9.8