2 Commits

Author SHA1 Message Date
d3cb3d82de add io file 2024-10-23 11:18:24 +02:00
40041b0f12 clean workspace 2024-10-23 11:13:59 +02:00
8 changed files with 48 additions and 5501562 deletions

3
.gitignore vendored
View File

@@ -5,4 +5,5 @@ build/
# MacOS Cache
.DS_Store
test.bin
.vscode

View File

@@ -1,11 +1,8 @@
{
"configurations": [
{
"name": "Blitz",
"name": "Assembleur",
"cppStandard": "c++17",
"includePath": [
"include"
],
"compileCommands": ".vscode/compile_commands.json"
}
],

View File

@@ -1,5 +0,0 @@
{
"files.associations": {
"stdexcept": "cpp"
}
}

34
src/IO.cpp Normal file
View File

@@ -0,0 +1,34 @@
#include "IO.h"
#include "Assembleur.h"
#include <fstream>
BinaryData ParseFile(const std::string& fileName) {
std::ifstream file{fileName};
std::uint32_t lineNumber = 0, realLineNumber = 0;
std::string line;
Assembleur assembleur;
BinaryData output;
while (getline(file, line)) {
lineNumber++;
realLineNumber++;
if (line.find(":") != std::string::npos) {
std::string label = line.substr(0, line.size() - 1);
assembleur.AddLabel(label, lineNumber);
lineNumber--;
} else {
output.push_back(assembleur.ParseInstruction(line, lineNumber, realLineNumber));
}
}
return output;
}
void OutputFile(const BinaryData& a_Data, const std::string& fileName) {
std::ofstream file{fileName};
file.write(reinterpret_cast<const char*>(a_Data.data()), a_Data.size() * sizeof(a_Data.at(0)));
}

10
src/IO.h Normal file
View File

@@ -0,0 +1,10 @@
#pragma once
#include <string>
#include <vector>
using BinaryData = std::vector<std::uint32_t>;
BinaryData ParseFile(const std::string& fileName);
void OutputFile(const BinaryData& a_Data, const std::string& fileName);

View File

@@ -1,42 +1,6 @@
#include <fstream>
#include <iostream>
#include <vector>
#include "Assembleur.h"
using BinaryData = std::vector<std::uint32_t>;
static BinaryData ParseFile(const std::string& fileName) {
std::ifstream file{fileName};
std::uint32_t lineNumber = 0, realLineNumber = 0;
std::string line;
Assembleur assembleur;
BinaryData output;
while (getline(file, line)) {
lineNumber++;
realLineNumber++;
if (line.find(":") != std::string::npos) {
std::string label = line.substr(0, line.size() - 1);
assembleur.AddLabel(label, lineNumber);
lineNumber--;
} else {
output.push_back(assembleur.ParseInstruction(line, lineNumber, realLineNumber));
}
}
return output;
}
static void OutputFile(const BinaryData& a_Data, const std::string& fileName) {
std::ofstream file {fileName};
file.write(reinterpret_cast<const char*>(a_Data.data()), a_Data.size() * sizeof(a_Data.at(0)));
}
#include "IO.h"
int main(int argc, char** argv) {

BIN
test.bin

Binary file not shown.

5501515
test.txt

File diff suppressed because it is too large Load Diff