asm_parser/asm_parser.h

44 lines
1.7 KiB
C
Raw Permalink Normal View History

2024-10-30 16:31:10 +08:00
#ifndef ASM_PARSER_H
#define ASM_PARSER_H
#include <ctype.h>
2024-10-31 11:46:14 +08:00
#include <stdint.h>
2024-10-30 16:31:10 +08:00
#define ROWS 100
#define COLS 255
2024-10-30 16:31:10 +08:00
int read_asm_file(char *filename, char program[ROWS][COLS]);
int parse_instruction(char *instr, char *instr_bin_str);
2024-10-30 17:34:54 +08:00
int parse_reg(char reg_num, char *instr_bin_str);
2024-10-30 16:31:10 +08:00
int parse_add(char *instr, char *instr_bin_str);
int parse_mul(char *instr, char *instr_bin_str);
int parse_sub(char *instr, char *instr_bin_str);
int parse_div(char *instr, char *instr_bin_str);
int parse_and(char *instr, char *instr_bin_str);
int parse_or(char *instr, char *instr_bin_str);
int parse_xor(char *instr, char *instr_bin_str);
2024-10-31 11:46:14 +08:00
int parse_imm5(char *imm_str, int *imm_value);
2024-10-31 13:00:13 +08:00
/* Add additional helper functions to support other instructions */
int parse_nop(char *instr, char *instr_bin_str);
int parse_not(char *instr, char *instr_bin_str);
int parse_const(char *instr, char *instr_bin_str);
int parse_imm9(char *imm_str, int *imm_value);
int parse_sll(char *instr, char *instr_bin_str);
int parse_sra(char *instr, char *instr_bin_str);
int parse_srl(char *instr, char *instr_bin_str);
int parse_uimm4(char *imm_str, int *imm_value);
int parse_mod(char *instr, char *instr_bin_str);
int parse_jmpr(char *instr, char *instr_bin_str);
int parse_trap(char *instr, char *instr_bin_str);
int parse_uimm8(char *imm_str, int *imm_value);
int parse_rti(char *instr, char *instr_bin_str);
2024-10-30 16:31:10 +08:00
unsigned short int str_to_bin(char *instr_bin_str);
int write_obj_file(char *filename, unsigned short int program_bin[ROWS], int instr_count);
void int_to_bin_str(int num, int bits, char *bin_str);
void to_uppercase(char *str);
2024-10-31 11:46:14 +08:00
void trim(char *str);
void write_uint16_big_endian(FILE *file, uint16_t value);
2024-10-31 13:00:13 +08:00
2024-10-30 16:31:10 +08:00
#endif