#include "assembler.h"
-
+uint16_t mem[65536];
struct inst_t
{
bool contains_instruction;
uint8_t instruction_code;
uint8_t params[3];
-} instruction_default = {false, 0, 0, 0, 0};
+ uint16_t addr;
+} instruction_default = {false, 0, 0, 0, 0, 0};
struct label_t
{
token_count++;
token = strtok(NULL, " ");
}
+ inst.addr = current_addr;
+ memcpy(&mem[current_addr], &inst.instruction_code, 4);
current_addr = current_addr + 2;
return inst;
}
-void write_instruction(FILE** output_file, struct inst_t inst)
+void write_instructions(FILE** output_file)
{
- if(inst.contains_instruction)
- {
- fwrite(&inst.instruction_code, sizeof(uint8_t), 4, *output_file);
- }
+ fwrite(&mem, sizeof(uint16_t), 65536, *output_file);
}
int main(int argc, char *argv[])
rewind(input_file);
while(fgets(line_buffer, 256, input_file))
{
- write_instruction(&output_file, parse_line(line_buffer, labels, &labels_len, labels_index));
+ parse_line(line_buffer, labels, &labels_len, labels_index);
}
+ write_instructions(&output_file);
}