add multiple outputs

This commit is contained in:
2024-10-23 20:12:11 +02:00
parent 51f113804a
commit 39eb113385
3 changed files with 21 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
#include "IO.h" #include "IO.h"
#include "Assembleur.h" #include "Assembleur.h"
#include <bitset>
#include <fstream> #include <fstream>
BinaryData ParseFile(const std::string& fileName) { BinaryData ParseFile(const std::string& fileName) {
@@ -44,7 +45,22 @@ BinaryData ParseFile(const std::string& fileName) {
return output; return output;
} }
void OutputFile(const BinaryData& a_Data, const std::string& fileName) { void OutputFileBinary(const BinaryData& a_Data, const std::string& fileName) {
std::ofstream file{fileName}; std::ofstream file{fileName};
file.write(reinterpret_cast<const char*>(a_Data.data()), a_Data.size() * sizeof(a_Data.at(0))); file.write(reinterpret_cast<const char*>(a_Data.data()), a_Data.size() * sizeof(a_Data.at(0)));
} }
void OutputFileIntegers(const BinaryData& a_Data, const std::string& fileName) {
std::ofstream file{fileName};
for (std::uint32_t number : a_Data) {
file << number << "\n";
}
}
void OutputFileBinIntegers(const BinaryData& a_Data, const std::string& fileName) {
std::ofstream file{fileName};
for (std::uint32_t number : a_Data) {
file << std::bitset<8>(number >> 24) << " " << std::bitset<8>(number >> 16) << " " << std::bitset<8>(number >> 8) <<
" " << std::bitset<8>(number) << "\n";
}
}

View File

@@ -7,4 +7,6 @@ using BinaryData = std::vector<std::uint32_t>;
BinaryData ParseFile(const std::string& fileName); BinaryData ParseFile(const std::string& fileName);
void OutputFile(const BinaryData& a_Data, const std::string& fileName); void OutputFileBinary(const BinaryData& a_Data, const std::string& fileName);
void OutputFileIntegers(const BinaryData& a_Data, const std::string& fileName);
void OutputFileBinIntegers(const BinaryData& a_Data, const std::string& fileName);

View File

@@ -7,7 +7,7 @@ int main(int argc, char** argv) {
try { try {
auto output = ParseFile("test.asm"); auto output = ParseFile("test.asm");
OutputFile(output, "test.bin"); OutputFileBinary(output, "test.bin");
} catch (std::runtime_error& e) { } catch (std::runtime_error& e) {
std::cerr << e.what() << std::endl; std::cerr << e.what() << std::endl;
return 1; return 1;