Add ObjectGenerator and Register Allocator (#10)

* start the ObjectFileGenerator

* finish v3 generation

* add analysis for register allocator

* add register allocator

* fix const

* fix build

* fix formatting for clang-format

* attempt to fix windows build

* windows 2

* windows 3

* windows 4

* windows 5

* windows 6
This commit is contained in:
water111
2020-09-05 16:37:37 -04:00
committed by GitHub
parent 660eeda63a
commit 2075dd66b6
37 changed files with 2815 additions and 20 deletions
+20
View File
@@ -0,0 +1,20 @@
#include "ObjectFileData.h"
namespace emitter {
std::vector<u8> ObjectFileData::to_vector() const {
std::vector<uint8_t> result;
// header
result.insert(result.end(), header.begin(), header.end());
// link tables
for (int seg = N_SEG; seg-- > 0;) {
result.insert(result.end(), link_tables[seg].begin(), link_tables[seg].end());
}
// data (code + static objects, by segment)
for (int seg = N_SEG; seg-- > 0;) {
result.insert(result.end(), segment_data[seg].begin(), segment_data[seg].end());
}
return result;
}
} // namespace emitter