From 282e4fa71569ec34c5144ba5a1d53751896c0175 Mon Sep 17 00:00:00 2001 From: Kaya Celebi Date: Mon, 10 Apr 2023 23:40:48 -0400 Subject: [PATCH] Initial commit, moving from old repo --- .circleci/config.yml | 49 ++ .gitignore | 8 + LICENSE | 21 + README.md | 23 + pyproject.toml | 5 + pytest.ini | 2 + references/mdimg.png | Bin 0 -> 289093 bytes requirements.txt | 1 + setup.cfg | 33 ++ src/riscv_assembler/__init__.py | 0 src/riscv_assembler/convert.py | 164 +++++++ src/riscv_assembler/data/instr_data.dat | 67 +++ src/riscv_assembler/data/reg_map.dat | 64 +++ src/riscv_assembler/depr_convert.py | 614 ++++++++++++++++++++++++ src/riscv_assembler/instr_arr.py | 407 ++++++++++++++++ src/riscv_assembler/parse.py | 123 +++++ src/riscv_assembler/project_convert.py | 89 ++++ tests/__init__.py | 0 tests/assembly/prjtest1/argmax.s | 65 +++ tests/assembly/prjtest1/classify.s | 248 ++++++++++ tests/assembly/prjtest1/dot.s | 80 +++ tests/assembly/prjtest1/main.s | 16 + tests/assembly/prjtest1/matmul.s | 153 ++++++ tests/assembly/prjtest1/read_matrix.s | 130 +++++ tests/assembly/prjtest1/relu.s | 56 +++ tests/assembly/prjtest1/utils.s | 379 +++++++++++++++ tests/assembly/prjtest1/write_matrix.s | 133 +++++ tests/assembly/test0.s | 1 + tests/assembly/test1.s | 1 + tests/assembly/test2.s | 7 + tests/assembly/test3.s | 1 + tests/assembly/test4.s | 4 + tests/test_class.py | 165 +++++++ 33 files changed, 3109 insertions(+) create mode 100644 .circleci/config.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 pyproject.toml create mode 100644 pytest.ini create mode 100644 references/mdimg.png create mode 100644 requirements.txt create mode 100644 setup.cfg create mode 100644 src/riscv_assembler/__init__.py create mode 100644 src/riscv_assembler/convert.py create mode 100644 src/riscv_assembler/data/instr_data.dat create mode 100644 src/riscv_assembler/data/reg_map.dat create mode 100644 src/riscv_assembler/depr_convert.py create mode 100644 src/riscv_assembler/instr_arr.py create mode 100644 src/riscv_assembler/parse.py create mode 100644 src/riscv_assembler/project_convert.py create mode 100644 tests/__init__.py create mode 100755 tests/assembly/prjtest1/argmax.s create mode 100755 tests/assembly/prjtest1/classify.s create mode 100755 tests/assembly/prjtest1/dot.s create mode 100755 tests/assembly/prjtest1/main.s create mode 100755 tests/assembly/prjtest1/matmul.s create mode 100755 tests/assembly/prjtest1/read_matrix.s create mode 100755 tests/assembly/prjtest1/relu.s create mode 100755 tests/assembly/prjtest1/utils.s create mode 100755 tests/assembly/prjtest1/write_matrix.s create mode 100644 tests/assembly/test0.s create mode 100644 tests/assembly/test1.s create mode 100644 tests/assembly/test2.s create mode 100644 tests/assembly/test3.s create mode 100644 tests/assembly/test4.s create mode 100644 tests/test_class.py diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..2797c32 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,49 @@ +# Use the latest 2.1 version of CircleCI pipeline process engine. +# See: https://circleci.com/docs/2.0/configuration-reference +version: 2.1 + +# Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects. +# See: https://circleci.com/docs/2.0/orb-intro/ +orbs: + # The python orb contains a set of prepackaged CircleCI configuration you can use repeatedly in your configuration files + # Orb commands and jobs help you with common scripting around a language/tool + # so you dont have to copy and paste it everywhere. + # See the orb documentation here: https://circleci.com/developer/orbs/orb/circleci/python + python: circleci/python@1.5.0 + +# Define a job to be invoked later in a workflow. +# See: https://circleci.com/docs/2.0/configuration-reference/#jobs +jobs: + build-and-test: # This is the name of the job, feel free to change it to better match what you're trying to do! + # These next lines defines a Docker executors: https://circleci.com/docs/2.0/executor-types/ + # You can specify an image from Dockerhub or use one of the convenience images from CircleCI's Developer Hub + # A list of available CircleCI Docker convenience images are available here: https://circleci.com/developer/images/image/cimg/python + # The executor is the environment in which the steps below will be executed - below will use a python 3.10.2 container + # Change the version below to your required version of python + docker: + - image: cimg/python:3.10.2 + # Checkout the code as the first step. This is a dedicated CircleCI step. + # The python orb's install-packages step will install the dependencies from a Pipfile via Pipenv by default. + # Here we're making sure we use just use the system-wide pip. By default it uses the project root's requirements.txt. + # Then run your tests! + # CircleCI will report the results back to your VCS provider. + steps: + - checkout + - python/install-packages: + pkg-manager: pip + # app-dir: ~/project/package-directory/ # If you're requirements.txt isn't in the root directory. + # pip-dependency-file: test-requirements.txt # if you have a different name for your requirements file, maybe one that combines your runtime and test requirements. + - run: + name: Run tests + # This assumes pytest is installed via the install-package step above + #command: python -m tests.test_class + command: pytest + + +# Invoke jobs via workflows +# See: https://circleci.com/docs/2.0/configuration-reference/#workflows +workflows: + sample: # This is the name of the workflow, feel free to change it to better match your workflow. + # Inside the workflow, you define the jobs you want to run. + jobs: + - build-and-test \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1a32213 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +old.md +riscv_assembler/prjtest.pybuild +dist +riscv_assembler.egg-info +build +.pytest_cache/ +deprc_setup.py +__pycache__/ \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5746121 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Kaya Celebi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ccbdee --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +[![kcelebi](https://circleci.com/gh/kcelebi/riscv-assembler.svg?style=svg)](https://circleci.com/gh/kcelebi/riscv-assembler) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + +![example](references/mdimg.png) +# riscv-assembler Documentation +RISC-V Assembly code assembler package. [View the full documentation here](https://www.riscvassembler.org) + +This package contains tools and functions that can convert **RISC-V Assembly code to machine code**. The whole process is implemented using Python purely for understandability, less so for efficiency in computation. These tools can be used to **convert given lines of code or [whole files](#convert) to machine code**. For conversion, output file types are binary, text files, and printing to console. The supported instruction types are **R, I, S, SB, U, and UJ**. Almost all standard instructions are supported, most pseudo instructions are also supported. + +Feel free to open an issue or contact me at [kayacelebi17@gmail.com](mailto:kayacelebi17@gmail.com?subject=[GitHub]%20riscv-assembler) with any questions/inquiries. + +# Installation +The package can be installed using pip: + + $ pip install riscv-assembler + +If issues arise try: + + $ python3 -m pip install riscv-assembler + +It's possible tha the ``bitstring`` dependency might not install correctly. If this occurs, you can simply pip install it separately: + + $ pip install bitstring diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..76b7319 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,5 @@ +[build-system] +requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"] +build-backend = "setuptools.build_meta" + +[tool.setuptools_scm] \ No newline at end of file diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000..b042f06 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,2 @@ +[pytest] +pythonpath = . src \ No newline at end of file diff --git a/references/mdimg.png b/references/mdimg.png new file mode 100644 index 0000000000000000000000000000000000000000..27306e72f20cc2e04ec8f8a0e0709dfad77dc8d7 GIT binary patch literal 289093 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

$_>@ic(A3-QlJ^^J8R9*+&@4$fr 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

)ickz`yGv*a9J>&fO-gcs!m87m#k(%Q&|J;4g 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°3TMqSXm*9n5@JL1|yWIK@K&N}-{yW;wd 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 A_W%F@ literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c021c5b --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pytest==7.2.2 diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..a1d784f --- /dev/null +++ b/setup.cfg @@ -0,0 +1,33 @@ +[metadata] +name = riscv-assembler +author = Kaya Celebi +author_email = kayacelebi17@gmail.com +description = RISC-V Assembly code assembler package for Python. +long_description = file: README.md +long_description_content_type = text/markdown +url = https://github.com/kcelebi/riscv-assembler +project_urls = + Bug Tracker = https://github.com/kcelebi/riscv-assembler/issues + Changelog = https://github.com/kcelebi/riscv-assembler/releases +classifiers = + Programming Language :: Python :: 3 + License :: OSI Approved :: MIT License + Intended Audience :: Developers + +[options] +package_dir = + = src +packages = find: +python_requires = >=3.6 +install_requires = + bitstring + +[options.packages.find] +where = src + +[options.package_data] +* = data/*.dat + +[options.entry_points] +console_scripts = + riscv_assembler = riscv_assembler.app:entry_point \ No newline at end of file diff --git a/src/riscv_assembler/__init__.py b/src/riscv_assembler/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/riscv_assembler/convert.py b/src/riscv_assembler/convert.py new file mode 100644 index 0000000..71a6a7f --- /dev/null +++ b/src/riscv_assembler/convert.py @@ -0,0 +1,164 @@ +''' + Current Functionality: + - Read given file + - Tokenize that file, split up variables on each line + - Identify function, registers, variables + - Convert tokens of that line to machine code + - Output to text, bin, or console + + Immediate ToDos: + - Implement hexmode + - Go through and fix the instruction conversions themselves + - Update tests +''' + +from riscv_assembler.instr_arr import * +from riscv_assembler.parse import * + +__all__ = ['AssemblyConverter'] + +class AssemblyConverter: + + def __init__(self, output_mode : str = 'a', nibble_mode : bool = False, hex_mode : bool = False) -> None: + self.__output_mode = self.__check_output_mode(output_mode) + self.__nibble_mode = self.__check_nibble_mode(nibble_mode) + self.__hex_mode = self.__check_hex_mode(hex_mode) + + def __str__(self): + return "Output: {output_mode}, Nibble: {nibble_mode}, Hex: {hex_mode}".format( + output_mode = self.__output_mode, + nibble_mode = self.__nibble_mode, + hex_mode = self.__hex_mode + ) + + def __repr__(self): + return "Output: {output_mode}, Nibble: {nibble_mode}, Hex: {hex_mode}".format( + output_mode = self.__output_mode, + nibble_mode = self.__nibble_mode, + hex_mode = self.__hex_mode + ) + + def clone(self): + return AssemblyConverter( + output_mode = self.__output_mode, + nibble_mode = self.__nibble_mode, + hex_mode = self.__hex_mode + ) + + def __call__(self, *args): + return self.convert(*args) + + def __check_output_mode(self, x) -> str: + mod = ''.join(sorted(x.split())) + assert mod in ['a', 'f', 'p', None], "Output Mode needs to be one of a(rray), f(ile), p(rint), or None." + return x + + def __check_nibble_mode(self, x) -> str: + assert type(x) == bool, "Nibble mode needs to be a boolean." + return x + + def __check_hex_mode(self, x) -> str: + assert type(x) == bool, "Hex mode needs to be a boolean." + return x + + ''' + Property: the way to output machine code + Options: 'a', 'f', 'p' + ''' + @property + def output_mode(self) -> str: + return self.__output_mode + + @output_mode.setter + def output_mode(self, x : str) -> None: + self.__output_mode = x + + ''' + Property: whether to print in nibbles (only applicable for text or print) + True = nibble + False = full number + ''' + @property + def nibble_mode(self) -> str: + return self.__nibble_mode + + @nibble_mode.setter + def nibble_mode(self, x : str) -> None: + self.__nibble_mode = x + + ''' + Property: whether to return as hex or not + True = hex + False = binary + ''' + @property + def hex_mode(self) -> str: + return self.__hex_mode + + @hex_mode.setter + def hex_mode(self, x : str) -> None: + self.__hex_mode = x + + ''' + Put it all together. Need to modify for output type. + + Input is either a file name or string of assembly. + ''' + def convert(self, input : str, file : str = None): + output = Parser(input) + assert len(output) > 0, "Provided input yielded nothing from parser. Check input." + output = self.mod(output) # apply nibble mode, hex mode + + if self.__output_mode == 'a': + return output + elif self.__output_mode == 'f': + assert file != None, "For output mode to file, need to provided file name." + AssemblyConverter.write_to_file(output, file) + return + elif self.__output_mode == 'p': + print('\n'.join(output)) + return + + raise NotImplementedError() + + @staticmethod + def write_to_file(output : list, file : str) -> None: + extension = file[-4:] + + if extension == '.bin': + with open(file, 'wb') as f: + for instr in output: + byte_array = [instr[i:i+8] for i in range(0,len(instr),8)] + byte_list = [int(b,2) for b in byte_array] + f.write(bytearray(byte_list)) + return + + elif extension == '.txt': + with open(file, 'w') as f: + for instr in output: + f.write(instr + "\n") + + return + + elif extension == '.csv': + raise NotImplementedError() + + elif extension == '.dat': + raise NotImplementedError() + + raise NotImplementedError() + + def mod(self, output : list) -> list: + if self.__nibble_mode: + output = AssemblyConverter.apply_nibble(output) + elif self.__hex_mode: + output = AssemblyConverter.apply_hex(output) + return output + + @staticmethod + def apply_nibble(output : list) -> list: + return ['\t'.join([elem[i:i+4] for i in range(0, len(elem), 4)]) for elem in output] + + @staticmethod + def apply_hex(output : list) -> list: + return ['0x' + '{:08X}'.format(int(elem, 2)).lower() for elem in output] diff --git a/src/riscv_assembler/data/instr_data.dat b/src/riscv_assembler/data/instr_data.dat new file mode 100644 index 0000000..7160191 --- /dev/null +++ b/src/riscv_assembler/data/instr_data.dat @@ -0,0 +1,67 @@ +add 0110011 000 0000000 +sub 0110011 000 0100000 +sll 0110011 001 0000000 +slt 0110011 010 0000000 +sltu 0110011 011 0000000 +xor 0110011 100 0000000 +srl 0110011 101 0000000 +sra 0110011 101 0100000 +or 0110011 110 0000000 +and 0110011 111 0000000 +addw 0111011 000 0000000 +subw 0111011 000 0100000 +sllw 0111011 001 0000000 +slrw 0111011 101 0000000 +sraw 0111011 101 0100000 +addi 0010011 000 +lb 0000011 000 +lh 0000011 001 +lw 0000011 010 +ld 0000011 011 +lbu 0000011 100 +lhu 0000011 101 +lwu 0000011 110 +fence 0001111 000 +fence.i 0001111 001 +slli 0010011 001 0000000 +slti 0010011 010 +sltiu 0010011 011 +xori 0010011 100 +slri 0010011 101 0000000 +srai 0010011 101 0100000 +ori 0010011 110 +andi 0010011 111 +addiw 0011011 000 +slliw 0011011 001 0000000 +srliw 0011011 101 0000000 +sraiw 0011011 101 0100000 +jalr 1100111 000 +ecall 1110011 000 000000000000 +ebreak 1110011 000 000000000001 +CSRRW 1110011 001 +CSRRS 1110011 010 +CSRRC 1110011 011 +CSRRWI 1110011 101 +CSRRSI 1110011 110 +CSRRCI 1110011 111 +sw 0100011 010 -1 +sb 0100011 000 -1 +sh 0100011 001 -1 +sd 0100011 011 -1 +beq 1100011 000 -1 +bne 1100011 001 -1 +blt 1100011 100 -1 +bge 1100011 101 -1 +bltu 1100011 110 -1 +bgeu 1100011 111 -1 +auipc 0010111 -1 -1 +lui 0110111 -1 -1 +jal 1101111 -1 -1 +mul 0110011 000 0000001 +mulh 0110011 001 0000001 +mulsu 0110011 010 0000001 +mulu 0110011 011 0000001 +div 0110011 100 0000001 +divu 0110011 101 0000001 +rem 0110011 110 0000001 +remu 0110011 111 0000001 \ No newline at end of file diff --git a/src/riscv_assembler/data/reg_map.dat b/src/riscv_assembler/data/reg_map.dat new file mode 100644 index 0000000..0b0e0dd --- /dev/null +++ b/src/riscv_assembler/data/reg_map.dat @@ -0,0 +1,64 @@ +x0 x0 +x1 x1 +x2 x2 +x3 x3 +x4 x4 +x5 x5 +x6 x6 +x7 x7 +x8 x8 +x9 x9 +x10 x10 +x11 x11 +x12 x12 +x13 x13 +x14 x14 +x15 x15 +x16 x16 +x17 x17 +x18 x18 +x19 x19 +x20 x20 +x21 x21 +x22 x22 +x23 x23 +x24 x24 +x25 x25 +x26 x26 +x27 x27 +x28 x28 +x29 x29 +x30 x30 +x31 x31 +ra x1 +sp x2 +gp x3 +tp x4 +t0 x5 +t1 x6 +t2 x7 +s0 x8 +fp x8 +s1 x9 +a0 x10 +a1 x11 +a2 x12 +a3 x13 +a4 x14 +a5 x15 +a6 x16 +a7 x17 +s2 x18 +s3 x19 +s4 x20 +s5 x21 +s6 x22 +s7 x23 +s8 x24 +s9 x25 +s10 x26 +s11 x27 +t3 x28 +t4 x29 +t5 x30 +t6 x31 \ No newline at end of file diff --git a/src/riscv_assembler/depr_convert.py b/src/riscv_assembler/depr_convert.py new file mode 100644 index 0000000..1be21f5 --- /dev/null +++ b/src/riscv_assembler/depr_convert.py @@ -0,0 +1,614 @@ +from bitstring import BitArray +import math as m +from pathlib import Path +import os + +''' + DEPRECATED VERSION AS OF MARCH 30th +''' + +__all__ = ['AssemblyConverter'] +class WrongInstructionSize( Exception ): + #raised when instruction size is not 32 bits + def __init__(self, message = "Instruction is not 32 bits, possible assembly file error"): + self.message = message + super().__init__(self.message) + +class NotBinaryNumber( Exception ): + #raised when instructions contains non-binary elements + def __init__(self, message = "Instruction is not binary"): + self.message = message + super().__init__(self.message) + +class IncorrectOutputType( Exception ): + def __init__(self, message = "Output type is used incorrectly, should be bt, b, or t"): + self.message = message + super().__init__(self.message) + +class WrongFileType( Exception ): + def __init__(self, message = "File must have .s extension for assembly code"): + self.message = message + super().__init__(self.message) + +class EmptyFile( Exception ): + def __init__(self, message = "File either doesn't exist, has no code, or all is commented out.\nInvestigate any tab/spacing syntax issues"): + self.message = message + super().__init__(self.message) + +class WrongInstructionType( Exception ): + def __init__(self, message = "This instruction does not fit this instruction type"): + self.message = message + super().__init__(self.message) + +#----------------------------------------------------------------------------------------- +#----------------------------------------------------------------------------------------- +#----------------------------------------------------------------------------------------- + +#flatten__ an array +def flatten(x): + arr = [] + for e in x: + if not isinstance(e, list): + arr.append(e) + else: + arr.extend(e) + return arr + +def nibbleForm(x): + fin_str = "" + for i in range(0,len(x),4): + fin_str += (x[i:i+4] + "\t") + return fin_str[:-1] + + + +#----------------------------------------------------------------------------------------- +#----------------------------------------------------------------------------------------- +#----------------------------------------------------------------------------------------- + +class AssemblyConverter: + + r_map = {} + instr_data = {} + R_instr = [ + "add","sub", "sll", + "sltu", "xor", "srl", + "sra", "or", "and", + "addw", "subw", "sllw", + "slrw", "sraw", "mul", + "mulh", "mulu", "mulsu", + "div", "divu", "rem", + "remu" + ] + I_instr = [ + "addi", "lb", "lw", + "ld", "lbu", "lhu", + "lwu", "fence", "fence.i", + "slli", "slti", "sltiu", + "xori", "slri", "srai", + "ori", "andi", "addiw", + "slliw", "srliw", "sraiw", + "jalr", "ecall", "ebreak", + "CSRRW", "CSRRS","CSRRC", + "CSRRWI", "CSRRSI", "CSRRCI" + ] + S_instr = [ + "sw", "sb", "sh", + "sd" + ] + SB_instr = [ + "beq", "bne", "blt", + "bge", "bltu", "bgeu" + ] + U_instr = ["auipc", "lui"] + UJ_instr = ["jal"] + pseudo_instr = [ + "beqz", "bnez", "li", + "mv", "j", "jr", + "la", "neg", "nop", + "not", "ret", "seqz", + "snez", "bgt", "ble" + ] + + all_instr = flatten([ + R_instr, I_instr, S_instr, + SB_instr, U_instr, UJ_instr, + pseudo_instr + ]) + + def __init__(self, output_type='b', nibble = False, filename = "", hexMode = False): + self.code = [] + self.instructions = [] + self.hexMode = hexMode + + if "b" not in output_type and "t" not in output_type and "p" not in output_type and "r" not in output_type: + raise IncorrectOutputType() + else: + self.output_type = output_type + + #antiquated functionality, keep anyway no harm done + self.filename = filename + if filename != "": + self.code = self.__read_in_advance() + + #print(len(self.code)) + self.nibble = nibble + #get instruction data and register mapping + self.r_map, self.instr_data = self.__pre() + + def __str__(): + return "AssemblyConverter(output_type={}, nibble={}, filename={}, hexmode={})".format( + self.output_type, self.nibble, + self.filename, self.hexMode + ) + + + #helper methods + def __reg_map(self,x): + return self.r_map[x] + + def __reg_to_bin(self,x): + return self.__binary(int(x[1::]), 5) + + #for jumps, calculates hex address of func + def calcJump(self, x,line_num): + #calc line number of func + for i in range(len(self.code)): + if x+":" == self.code[i]: + return (i - line_num)*4 #how many instructions to jump ahead/behind + #print("Address not found") + return -10 #if not found + + def __binary(self, x, size): + byte_num = m.ceil(size/8) + b_num = x.to_bytes(byte_num, byteorder = 'big', signed = True) + + fin_bin = ''.join(format(byte, '08b') for byte in b_num) + + if byte_num*8 == size: + return fin_bin + return fin_bin[len(fin_bin)-size:len(fin_bin)] + + #checks if line is comment, empty space, or .global .text + def __valid_line(self, x, allow_colon = False): + if x[0][0] == "#" or x[0][0] == "\n" or x[0][0] == "" or x[0][0] == ".": + return False + + if not allow_colon and x[0][-1] == ":" : + return False + return True + + #gets rid of inline comments + @staticmethod + def __handle_inline_comments(x): + if "#" in x: + pos = x.index("#") + if pos != 0 and pos != len(x)-1: + return x[0:pos] + + return x + + #change output type + def setOutputType(self, x): + self.output_type = x + + #return output type + def getOutputType(self): + return self.output_type + + #checks whether instruction is in system + def instructionExists(self,x): + return x in self.all_instr + + #convert instructions from binary to hex + def hex(self,x,leading_zero=True): + if leading_zero: + num = str(hex(int(x,2))) + return "0x"+num[2::].zfill(8) + else: + return str(hex(int(x,2))) + + #set hexMode to T/F + def setHex(self, x): + self.hexMode = x + + #add custom pseudo instruction + #to be implemented later + ''' + def addPseudo(instr, op_arr): + return "" + ''' + + #create instruction + def R_type( + self, instr, rs1, + rs2, rd): + + if instr not in self.R_instr: + raise WrongInstructionType() + + opcode = 0;f3 = 1;f7 = 2 + return "".join([ + self.instr_data[instr][f7], + self.__reg_to_bin(rs2), + self.__reg_to_bin(rs1), + self.instr_data[instr][f3], + self.__reg_to_bin(rd), + self.instr_data[instr][opcode] + ]) + + def I_type( + self, instr, rs1, + imm, rd): + + if instr not in self.I_instr: + raise WrongInstructionType() + + opcode = 0;f3 = 1;f7 = 2 + mod_imm = int(imm) - ((int(imm)>>12)<<12) # imm[11:0] + return "".join([ + #self.__binary(int(imm),12), + self.__binary(mod_imm,12), + self.__reg_to_bin(rs1), + self.instr_data[instr][f3], + self.__reg_to_bin(rd), + self.instr_data[instr][opcode] + ]) + + def S_type( + self, instr, rs1, + rs2, imm): + + if instr not in self.S_instr: + raise WrongInstructionType() + + opcode = 0;f3 = 1;f7 = 2 + mod_imm = (int(imm) - ((int(imm) >> 12) << 12)) >> 5 # imm[11:5] + mod_imm_2 = int(imm) - ((int(imm) >> 5) << 5) # imm[4:0] + return "".join([ + #self.__binary(int(imm),12)[::-1][5:12][::-1], + self.__binary(mod_imm, 7), # imm[11:5] + self.__reg_to_bin(rs2), + self.__reg_to_bin(rs1), + self.instr_data[instr][f3], + #self.__binary(int(imm),12)[::-1][0:5][::-1], + self.__binary(mod_imm_2, 5), # imm[4:0] + self.instr_data[instr][opcode] + ]) + + def SB_type( + self, instr, rs1, + rs2, imm): + + if instr not in self.SB_instr: + raise WrongInstructionType() + + opcode = 0;f3 = 1;f7 = 2 + + mod_imm = (int(imm) - ((int(imm) >> 12) << 12)) >> 6 # imm[12] + mod_imm += (int(imm) - ((int(imm) >> 11) >> 11)) >> 5 # imm[12|10:5] + mod_imm_2 = (int(imm) - ((int(imm) >> 5) << 5)) # imm[4:1] + mod_imm_2 += (int(imm) - ((int(imm) >> 11) << 11)) >> 10 # imm[4:1|11] + + return "".join([ + #"".join([ + # self.__binary(int(imm),13)[::-1][12][::-1], + # self.__binary(int(imm),13)[::-1][5:11][::-1] + #]), + self.__binary(mod_imm,7), + self.__reg_to_bin(rs2), + self.__reg_to_bin(rs1), + self.instr_data[instr][f3], + self.__binary(mod_imm_2,5), + #"".join([ + # self.__binary(int(imm),13)[::-1][1:5][::-1], + # self.__binary(int(imm),13)[::-1][11][::-1] + #]), + self.instr_data[instr][opcode] + ]) + + + def U_type( + self, instr, + imm, rd): + + if instr not in self.U_instr: + raise WrongInstructionType() + opcode = 0;f3 = 1;f7 = 2 + + mod_imm = (int(imm) >> 12) + return "".join([ + #self.__binary(int(imm),32)[::-1][12:32][::-1], + self.__binary(mod_imm,20), + self.__reg_to_bin(rd), + self.instr_data[instr][opcode] + ]) + + def UJ_type( + self, instr, + imm, rd): + + if instr not in self.UJ_instr: + raise WrongInstructionType() + + opcode = 0;f3 = 1;f7 = 2 + + mod_imm = ((int(imm) - ((int(imm) >> 20) << 20)) >> 19) << 19 # imm[20] + mod_imm += (int(imm) - ((int(imm) >> 10) << 10)) >> 1 # imm[20|10:1] + mod_imm += (int(imm) - ((int(imm) >> 11) << 11)) >> 10 # imm[20|10:1|11] + mod_imm += (int(imm) - ((int(imm) >> 19) << 19)) >> 12 # imm[20|10:1|11|19:12] + return "".join([ + #"".join([ + # self.__binary(int(imm),21)[::-1][20][::-1], self.__binary(int(imm),21)[::-1][1:11][::-1], + # self.__binary(int(imm),21)[::-1][11][::-1], + # self.__binary(int(imm),21)[::-1][12:20][::-1] + #]), + self.__binary(mod_imm,20), + self.__reg_to_bin(rd), + self.instr_data[instr][opcode] + ]) + + + ##Procedural functions + + #initializing mapping and instruction data + def __pre(self): + #register mapping + #make dictionary + rmap_path = Path(__file__).parent / "data/reg_map.dat" + r_p = {} + + f = open(rmap_path,"r") + #f = open("riscinterpreter/data/reg_map.dat", "r") + #f = open("src/data/reg_map.dat","r") + line = f.readline() + + #assign mapping + while line != "": + elems = line.split(" ") + r_p[elems[0]] = elems[1] + line = f.readline() + + f.close() + #index for instr_data + opcode = 0 + f3 = 1 + f7 = 2 + + #order is [opcode, f3, f7] + i_data = {} + instr_path = Path(__file__).parent / "data/instr_data.dat" + f = open(instr_path,"r") + #f = open("riscinterpreter/data/instr_data.dat", "r") + #f = open("src/data/instr_data.dat","r") + line = f.readline() + + #assign data + while line != "": + elems = line.replace("\n","").split(" ") + i_data[elems[0]] = elems[1::] + line = f.readline() + f.close() + + return r_p,i_data + + #READ FILE IN ADVANCE + def __read_in_advance(self): + code = [] + file = open(self.filename, "r") + + #store the lines in the arr + line = file.readline() + while line != "": + line = line.strip() + clean = flatten([elem.replace("\n","").split(",") for elem in line.split(" ")]) + if line == "" or not self.__valid_line(clean, True): + line = file.readline() + continue + code.append(line.strip()) + line = file.readline() + + return code + + #retrieve instructions + def __get_instructions(self): + #array to store instructions in + instructions = [] + for i in range(len(self.code)): + line = self.code[i] + + response = self.__interpret(line,i) + if -1 not in response: + instructions.extend(response) + + return instructions + + #interpret each line and form instructions + ''' + TO DO + Clean up all of this + ''' + def __interpret(self,line,i): + res = [] + line = self.__handle_inline_comments(line) + line = line.strip() + #print(line) + clean = flatten([elem.replace("\n","").split(",") for elem in line.split(" ")]) + + while "" in clean: + clean.remove("") + + #check if line is comment, empty space, .global .text + if not self.__valid_line(clean): + return [-1] + + if clean[0] == "ecall": + return [-1] + + if clean[0] == "sw" or clean[0] == "lw" or clean[0] == "lb" or clean[0] == "lh" or clean[0] == "sb" or clean[0] == "sh": + #sw s0, 0(sp) + w_spl = clean[2].split("(") + clean[2] = w_spl[0] + clean.append(w_spl[1].replace(")","")) + + if clean[0] in self.R_instr: + res.append(self.R_type(clean[0], self.__reg_map(clean[2]), self.__reg_map(clean[3]), self.__reg_map(clean[1]))) + #print(res) + elif clean[0] in self.I_instr: + if clean[0] == "jalr": + if len(clean) == 4: + res.append(self.I_type(clean[0], self.__reg_map(clean[2]), self.calcJump(clean[3],i),self.__reg_map(clean[1]))) + else: + res.append(self.I_type(clean[0], self.__reg_map(clean[1]), "0", self.__reg_map("x1"))) + elif clean[0] == "lw": + res.append(self.I_type(clean[0], self.__reg_map(clean[3]), clean[2], self.__reg_map(clean[1]))) + else: + res.append(self.I_type(clean[0], self.__reg_map(clean[2]), clean[3], self.__reg_map(clean[1]))) + #print(res) + elif clean[0] in self.S_instr: + res.append(self.S_type(clean[0], self.__reg_map(clean[3]), self.__reg_map(clean[1]), clean[2])) + #print(res) + elif clean[0] in self.SB_instr: + res.append(self.SB_type(clean[0], self.__reg_map(clean[1]), self.__reg_map(clean[2]), self.calcJump(clean[3],i))) + #print(res) + elif clean[0] in self.U_instr: + res.append(self.U_type(clean[0], clean[1], self.__reg_map(clean[2]))) + #print(res) + elif clean[0] in self.UJ_instr: + if len(clean) == 3: + res.append(self.UJ_type(clean[0], self.calcJump(clean[2],i), self.__reg_map(clean[1]))) + else: + res.append(self.UJ_type(clean[0], self.calcJump(clean[1],i), self.__reg_map("x1"))) + #print(res) + elif clean[0] in self.pseudo_instr: + #print(clean[0] + " pseudo") + + if clean[0] == "li": #need to consider larger than 12 bits + #res = self.I_type("addi",self.__reg_map(clean[1]), self.calcJump(clean[2],i), self.__reg_map(clean[1])) + if int(clean[2]) > 2**11: + res.append(self.U_type(instr='lui', imm=clean[2], rd=self.__reg_map(clean[1]))) + res.append(self.I_type("addi",self.__reg_map(clean[1]), clean[2], self.__reg_map(clean[1]))) + elif clean[0] == "nop": + res.append(self.I_type("addi", self.__reg_map("x0"), "0", self.__reg_map("x0"))) + elif clean[0] == "mv": + res.append(self.I_type("addi", self.__reg_map(clean[2]), "0", self.__reg_map(clean[1]))) + elif clean[0] == "not": + res.append(self.I_type("xori", self.__reg_map(clean[2]), "-1", self.__reg_map(clean[1]))) + elif clean[0] == "neg": + res.append(self.R_type("sub", self.__reg_map("x0"), self.__reg_map(clean[2]), self.__reg_map(clean[1]))) + elif clean[0] == "la": + res.append(self.U_type("auipc", self.calcJump(clean[2],i), self.__reg_map(clean[1]))) + elif clean[0] == "j": + res.append(self.UJ_type("jal", self.calcJump(clean[1],i), self.__reg_map("x0"))) + elif clean[0] == "jr": + res.append(self.I_type("jalr", self.__reg_map(clean[1]), "0", self.__reg_map("x0"))) + elif clean[0] == "ret": + res.append(self.I_type("jalr", self.__reg_map("x1"), "0", self.__reg_map("x0"))) + elif clean[0] == "bgt": + res.append(self.SB_type("blt", self.__reg_map(clean[2]), self.__reg_map(clean[1]), self.calcJump(clean[3],i))) + elif clean[0] == "ble": + res.append(self.SB_type("bge", self.__reg_map(clean[2]), self.__reg_map(clean[1]), self.calcJump(clean[3], i))) + else: + #debugging + print("Error: " + line) + + #check for critical errors + for r in res: + for e in r: + if int(e) != 0 and int(e) != 1: + raise Not__binaryNumber(r) + if len(r) != 32: + raise WrongInstructionSize(len(r)) + + #return instruction + return res + + #AFTER READING FILE + def __post(self): + + if len(self.instructions) == 0: + raise EmptyFile() + if "b" in self.output_type: + print("-----Writing to binary file-----") + #make it [their .s file name].bin + fname = self.filename.split("/")[-1] + print("Output file: " + fname[:-2] + ".bin") + + if not os.path.exists(fname[:-2]): + os.mkdir(fname[:-2]) + os.mkdir(f"{fname[:-2]}/bin") + else: + if not os.path.exists("bin"): + os.mkdir(f"{fname[:-2]}/bin") + + #with open("output/"+fname[:-2]+"/bin/" + fname[:-2] + ".bin", "wb") as f: + with open(fname[:-2]+"/bin/" + fname[:-2] + ".bin", "wb") as f: + for elem in self.instructions: + #split into bytes + byte_array = [elem[i:i+8] for i in range(0,len(elem),8)] + byte_list = [int(b,2) for b in byte_array] + + f.write(bytearray(byte_list)) + f.close() + + if "t" in self.output_type: + print("------Writing to Text file------") + #make it [their .s file name].txt + + fname = self.filename.split("/")[-1] + print("Output file: " + fname[:-2] + ".txt") + + if not os.path.exists(fname[:-2]): + os.mkdir(fname[:-2]) + os.mkdir(f"{fname[:-2]}/txt") + else: + if not os.path.exists("txt"): + os.mkdir(f"{fname[:-2]}/txt") + + #with open("output/"+fname[:-2]+"text/" + fname[:-2] + ".txt", "w") as f: + with open(fname[:-2]+"/txt/" + fname[:-2] + ".txt", "w") as f: + for elem in self.instructions: + f.write(elem + "\n") + + if "p" in self.output_type: + print("------Printing Output------") + for elem in self.instructions: + print(elem) + + if "r" in self.output_type: + return self.instructions + + print("Number of instructions: {}".format(len(self.instructions))) + + #DO THE MAGIC + def convert(self,filename): + if filename[-2::] != ".s": + raise WrongFileType() + self.filename = filename + self.code = self.__read_in_advance() + self.instructions = self.__get_instructions() + + if self.hexMode: + for i in range(len(self.instructions)): + self.instructions[i] = self.hex(self.instructions[i]) + if self.nibble and not self.hexMode: + for i in range(len(self.instructions)): + self.instructions[i] = nibbleForm(self.instructions[i]) + + return self.__post() + + def convert_ret(self,filename): + if filename[-2::] != ".s": + raise WrongFileType() + self.filename = filename + #self.r_map, self.instr_data = self.__pre() + self.code = self.__read_in_advance() + self.instructions = self.__get_instructions() + + if self.hexMode: + for i in range(len(self.instructions)): + self.instructions[i] = self.hex(self.instructions[i]) + if self.nibble and not self.hexMode: + for i in range(len(self.instructions)): + self.instructions[i] = nibbleForm(self.instructions[i]) + return self.instructions \ No newline at end of file diff --git a/src/riscv_assembler/instr_arr.py b/src/riscv_assembler/instr_arr.py new file mode 100644 index 0000000..e865acc --- /dev/null +++ b/src/riscv_assembler/instr_arr.py @@ -0,0 +1,407 @@ +from pathlib import Path + +__all__ = [ + 'R_instr', 'I_instr', 'S_instr', + 'SB_instr', 'U_instr', 'UJ_instr','pseudo_instr', 'JUMP', + 'R', 'I', 'S', 'SB', 'U', 'UJ', + 'Rp', 'Ip', 'Sp', 'SBp', 'Up', 'UJp', 'Psp'] + +class Instruction: + def compute_instr(self, *args): + raise NotImplementedError() + + def __call__(self, *args): + return self.compute_instr(*args) + + def check_instr_valid(self, x, instr_set): + assert x in instr_set, "{instr} is not the right instruction for this function.".format(instr = x) + return x + + @staticmethod + def immediate(*args): + raise NotImplementedError() + + @staticmethod + def reg(x): + return format(int(x[1:]), '05b') + +class _R(Instruction): + def __repr__(self): + return "R instruction" + + def __str__(self): + return "R instruction" + + def compute_instr(self, instr, rs1, rs2, rd): + instr = super().check_instr_valid(instr, R_instr) + opcode, f3, f7 = 0, 1, 2 + + return "".join([ + instr_map[instr][f7], + super().reg(rs2), + super().reg(rs1), + instr_map[instr][f3], + super().reg(rd), + instr_map[instr][opcode] + ]) + +class _I(Instruction): + def __repr__(self): + return "I instruction" + + def __str__(self): + return "I instruction" + + def compute_instr(self, instr, rs1, imm, rd): + instr = super().check_instr_valid(instr, I_instr) + opcode, f3 = 0, 1 + + return "".join([ + _I.immediate(imm), + super().reg(rs1), + instr_map[instr][f3], + super().reg(rd), + instr_map[instr][opcode] + ]) + + @staticmethod + def immediate(imm): + #return int(imm) - ((int(imm)>>12)<<12) # imm[11:0] + return format(((1 << 12) - 1) & int(imm), '012b') + #return format(int(imm), '012b') + +class _S(Instruction): + def __repr__(self): + return "S instruction" + + def __str__(self): + return "S instruction" + + def compute_instr(self, instr, rs1, rs2, imm): + instr = super().check_instr_valid(instr, S_instr) + opcode, f3 = 0, 1 + + return "".join([ + _S.immediate(imm, 1), + super().reg(rs2), + super().reg(rs1), + instr_map[instr][f3], + _S.immediate(imm, 2), + instr_map[instr][opcode] + ]) + + @staticmethod + def immediate(imm, n): + '''mod_imm = (int(imm) - ((int(imm) >> 12) << 12)) >> 5 # imm[11:5] + mod_imm_2 = int(imm) - ((int(imm) >> 5) << 5) # imm[4:0] + + return mod_imm, mod_imm_2''' + mod_imm = format(((1 << 12) - 1) & int(imm), '012b') + if n == 1: + return mod_imm[0] + mod_imm[12-10 : 12-4] + return mod_imm[12-4 : 12 - 0] + mod_imm[1] + + +class _SB(Instruction): + def __repr__(self): + return "SB instruction" + + def __str__(self): + return "SB instruction" + + def compute_instr(self, instr, rs1, rs2, imm): + instr = super().check_instr_valid(instr, SB_instr) + opcode, f3 = 0, 1 + + return "".join([ + _SB.immediate(imm, 1), + super().reg(rs2), + super().reg(rs1), + instr_map[instr][f3], + _SB.immediate(imm, 2), + instr_map[instr][opcode] + ]) + + @staticmethod + def immediate(imm, n): + mod_imm = format(((1 << 13) - 1) & int(imm), '013b') + if n == 1: + return mod_imm[12-12] + mod_imm[12-11:12-5] + return mod_imm[12-4:12-0] + mod_imm[12-11] + +class _U(Instruction): + def __repr__(self): + return "U instruction" + + def __str__(self): + return "U instruction" + + def compute_instr(self, instr, imm, rd): + instr = super().check_instr_valid(instr, U_instr) + opcode = 0 + + return "".join([ + _U.immediate(imm), + super().reg(rd), + instr_map[instr][opcode] + ]) + + @staticmethod + def immediate(imm): + return format(int(imm) >> 12, '013b') + +class _UJ(Instruction): + def __repr__(self): + return "UJ instruction" + + def __str__(self): + return "UJ instruction" + + def compute_instr(self, instr, imm, rd): + instr = super().check_instr_valid(instr, UJ_instr) + opcode = 0 + + return "".join([ + _UJ.immediate(imm), + super().reg(rd), + instr_map[instr][opcode] + ]) + + @staticmethod + def immediate(imm): + mod_imm = format(((1 << 21) - 1) & int(imm), '021b') + return mod_imm[20-20] + mod_imm[20-10:20-0] + mod_imm[20-11] + mod_imm[20-19:20-11] + +class InstructionParser: + def organize(self, *args): + raise NotImplementedError() + + def __call__(self, *args): + return self.organize(*args) + +class _R_parse(InstructionParser): + + def __repr__(self): + return "R Parser" + + def __str__(self): + return "R Parser" + + def organize(self, tokens): + instr, rs1, rs2, rd = tokens[0], reg_map[tokens[2]], reg_map[tokens[3]], reg_map[tokens[1]] + return R(instr, rs1, rs2, rd) + +class _I_parse(InstructionParser): + + def __repr__(self): + return "I Parser" + + def __str__(self): + return "I Parser" + + def organize(self, tokens): + line_num, code = tokens[-2], tokens[-1] + instr, rs1, imm, rd = tokens[0], None, None, None + if instr == "jalr": + if len(tokens) == 4+2: + rs1, imm, rd = reg_map[tokens[2]], JUMP(tokens[3], line_num, code), reg_map[tokens[1]] + else: + rs1, imm, rd = reg_map[tokens[1]], 0, reg_map["x1"] + elif instr == "lw": + rs1, imm, rd = reg_map[tokens[3]], tokens[2], reg_map[tokens[1]] + else: + rs1, imm, rd = reg_map[tokens[2]], tokens[3], reg_map[tokens[1]] + + return I(instr, rs1, imm, rd) + +class _S_parse(InstructionParser): + + def __repr__(self): + return "S Parser" + + def __str__(self): + return "S Parser" + + def organize(self, tokens): + instr, rs1, rs2, imm = tokens[0], reg_map[tokens[3]], reg_map[tokens[1]], tokens[2] + return S(instr, rs1, rs2, imm) + +class _SB_parse(InstructionParser): + + def __repr__(self): + return "SB Parser" + + def __str__(self): + return "SB Parser" + + def organize(self, tokens): + line_num, code = tokens[-2], tokens[-1] + instr, rs1, rs2, imm = tokens[0], reg_map[tokens[1]], reg_map[tokens[2]], JUMP(tokens[3], line_num, code) + return SB(instr, rs1, rs2, imm) + +class _U_parse(InstructionParser): + + def __repr__(self): + return "U Parser" + + def __str__(self): + return "U Parser" + + def organize(self, tokens): + instr, imm, rd = tokens[0], tokens[1], reg_map[tokens[2]] + return U(instr, imm, rd) + +class _UJ_parse(InstructionParser): + + def __repr__(self): + return "UJ Parser" + + def __str__(self): + return "UJ Parser" + + def organize(self, tokens): + line_num, code = tokens[-2], tokens[-1] + instr, imm, rd = tokens[0], None, None + if len(tokens) == 3: + imm, rd = JUMP(tokens[2], line_num, code), reg_map[tokens[1]] + else: + imm, rd = JUMP(tokens[1], line_num, code), reg_map["x1"] + + return UJ(instr, imm, rd) + +class _Pseudo_parse(InstructionParser): + + def __repr__(self): + return "Pseudo Parser" + + def __str__(self): + return "Pseudo Parser" + + def organize(self, tokens): + # better way to organize, express, abstract pseudo? + instr = tokens[0] + if instr == 'nop': + rs1, imm, rd = reg_map["x0"], 0, reg_map["x0"] + return I("addi", rs1, imm, rd) + elif instr == "mv": + rs1, imm, rd = reg_map[tokens[2]], 0, reg_map[tokens[1]] + return I("addi", rs1, imm, rd) + elif instr == "not": + rs1, imm, rd = reg_map[tokens[2]], -1, reg_map[tokens[1]] + return I("xori", rs1, imm, rd) + elif instr == "neg": + rs1, rs2, rd = reg_map["x0"], reg_map[tokens[2]], reg_map[tokens[1]] + return R("sub", rs1, rs2, rd) + + return BadInstructionError() + + +''' + Calculate a JUMP from a branch statement to another line +''' +def JUMP(tk : str, line_num : int, code: list) -> int: + # search forward + skip_labels = 0 + for i in range(line_num, len(code)): + if tk + ":" == code[i]: + jump_size = (i - line_num - skip_labels) * 4 # how many instructions to jump ahead + return jump_size + + # skip funcs that are not matching tk + if code[i][-1] == ':': + skip_labels += 1 + + # search backward + skip_labels = 0 + for i in range(line_num, -1, -1): + # substruct correct label itself + if code[i][-1] == ':': + skip_labels += 1 + + if tk + ":" == code[i]: + jump_size = (i - line_num + skip_labels) * 4 # how many instructions to jump behind + return jump_size + + raise Exception("Address not found! Provided assembly code could be faulty, branch is expressed but not found in code.") + +def register_map(): + path = Path(__file__).parent / "data/reg_map.dat" + rmap = {} + + f = open(path, "r") + line = f.readline() + while line != "": + e = line.split() + rmap[e[0]] = e[1] + line = f.readline() + f.close() + + return rmap + +def instruction_map(): + path = Path(__file__).parent / "data/instr_data.dat" + imap = {} + + f = open(path, "r") + line = f.readline() + while line != "": + e = line.split() + imap[e[0]] = e[1:] + line = f.readline() + f.close() + + return imap + + +R, I, S, SB, U, UJ = _R(), _I(), _S(), _SB(), _U(), _UJ() +Rp, Ip, Sp, SBp, Up, UJp, Psp = _R_parse(), _I_parse(), _S_parse(), _SB_parse(), _U_parse(), _UJ_parse(), _Pseudo_parse() +reg_map, instr_map = register_map(), instruction_map() + + +R_instr = [ + "add","sub", "sll", + "sltu", "xor", "srl", + "sra", "or", "and", + "addw", "subw", "sllw", + "slrw", "sraw", "mul", + "mulh", "mulu", "mulsu", + "div", "divu", "rem", + "remu" +] +I_instr = [ + "addi", "lb", "lw", + "ld", "lbu", "lhu", + "lwu", "fence", "fence.i", + "slli", "slti", "sltiu", + "xori", "slri", "srai", + "ori", "andi", "addiw", + "slliw", "srliw", "sraiw", + "jalr", "ecall", "ebreak", + "CSRRW", "CSRRS","CSRRC", + "CSRRWI", "CSRRSI", "CSRRCI" +] +S_instr = [ + "sw", "sb", "sh", + "sd" +] +SB_instr = [ + "beq", "bne", "blt", + "bge", "bltu", "bgeu" +] + +U_instr = ["auipc", "lui"] + +UJ_instr = ["jal"] + +pseudo_instr = [ + "beqz", "bnez", "li", + "mv", "j", "jr", + "la", "neg", "nop", + "not", "ret", "seqz", + "snez", "bgt", "ble" +] + +'''get_intr_set_map = {} +for instr_set in [R_instr, I_instr, S_instr, SB_instr, U_instr, UJ_instr, pseudo_instr]: + for instr in instr_set: + get_instr_set_map[instr] = ''' \ No newline at end of file diff --git a/src/riscv_assembler/parse.py b/src/riscv_assembler/parse.py new file mode 100644 index 0000000..643bc53 --- /dev/null +++ b/src/riscv_assembler/parse.py @@ -0,0 +1,123 @@ +from riscv_assembler.instr_arr import * +from types import FunctionType as function +from os.path import exists +__all__ = ['Parser'] + +class _Parser: + + ''' + Procedure: + - Call read_file() + - Strip the line and check valid_line() + - interpret() the line + - handle_inline_comments() + - determine_type() of instruction + - returns appropriate function + - return parsed version of line + - combine the interpreted lines together + - Return + ''' + + def __call__(self, *args) -> list: + if exists(*args): + return _Parser.interpret_arr(_Parser.read_file(*args)) + #return [_Parser.interpret(_Parser.tokenize(x)) for x in args[0].split("\n") if len(_Parser.tokenize(x)) > 0] + elif type(args[0]) == str: + return _Parser.interpret_arr(args[0].split('\n')) + return _Parser.interpret_arr(*args) + + ''' + In read_file(), Check if the inputted line is appropriate before + parsing it. + ''' + @staticmethod + def valid_line(x : str, allow_colon : bool = False) -> bool: + if x[0][0] == "#" or x[0][0] == "\n" or x[0][0] == "" or x[0][0] == ".": + return False + + if not allow_colon and x[-1] == ":" : + return False + return True + + ''' + In interpret(), remove any comments in the line. + ''' + @staticmethod + def handle_inline_comments(x : str) -> str: + if "#" in x: + pos = x.index("#") + if pos != 0 and pos != len(x)-1: + return x[0:pos].replace(',', ' ') + return x.replace(',', ' ') + + @staticmethod + def handle_specific_instr(x : list) -> list: + # for sw, lw, lb, lh, sb, sh + if len(x[0]) == 2 and (x[0] in S_instr or x[0] in I_instr): + y = x[-1].split('('); y[1] = y[1].replace(')','') + return x[0:-1] + y + elif 'requires jump' == 5: + ... + + return x + + ''' + Read the .s file provided and parse it completely. + ''' + @staticmethod + def read_file(file : str) -> list: + '''code = [] + file = open(file, "r") + line = file.readline() + while line != "": + tokens = _Parser.tokenize(line) + code += [_Parser.interpret(tokens) for _ in range(1) if len(tokens) != 0] + line = file.readline() + file.close() + return code''' + with open(file) as f: + return [x.strip() for x in f.readlines() if x != '\n'] + + @staticmethod + def interpret_arr(code : list) -> list: + int_code = [] + for line_num, line in enumerate(code): + tokens = _Parser.tokenize(line, line_num, code) + int_code += [_Parser.interpret(tokens) for _ in range(1) if len(tokens) != 0] + + return int_code + + ''' + Tokenize a given line + ''' + @staticmethod + def tokenize(line : str, line_num: int = None, code : list = None) -> list: + line = line.strip() + if len(line) > 0 and _Parser.valid_line(line): + tokens = _Parser.handle_inline_comments(line).split() + tokens = _Parser.handle_specific_instr(tokens) + return tokens + [line_num, code] if line_num != None and code != None else tokens + return [] + + ''' + In read_file(), parse and return the machine code. + ''' + @staticmethod + def interpret(tokens : list) -> str: + f = _Parser.determine_type(tokens[0]) + return f(tokens) + + ''' + In interpret(), determine which instruction set is being used + and return the appropriate parsing function. + ''' + @staticmethod + def determine_type(tk : str) -> function: + instr_sets = [R_instr, I_instr, S_instr, SB_instr, U_instr, UJ_instr, pseudo_instr] + parsers = [Rp, Ip, Sp, SBp, Up ,UJp, Psp] + for i in range(len(instr_sets)): + if tk in instr_sets[i]: + return parsers[i] + raise Exception("Bad Instruction Provided: " + tk + "!") + +Parser = _Parser() \ No newline at end of file diff --git a/src/riscv_assembler/project_convert.py b/src/riscv_assembler/project_convert.py new file mode 100644 index 0000000..0ac061a --- /dev/null +++ b/src/riscv_assembler/project_convert.py @@ -0,0 +1,89 @@ +from convert import AssemblyConverter +import os + +__all__ = ['ProjectConverter'] + +class NoAssemblyDirectory( Exception ): + def __init__(self, message = "The provided directory has no Assembly (.s) files in it"): + self.message = message + super().__init__(self.message) + +class ProjectConverter: + + def __init__(self, root = '', output_type='b', nibble = False, hexMode = False): + self.root = root #should be relative path from python script using pkg + if root == '': + self.root = os.getcwd() + + self.converter = AssemblyConverter(output_type=output_type, nibble=nibble, hexMode=hexMode) + + self.files = [x for x in os.listdir(self.root) if x[-2:] == '.s'] #need to raise error just in case + if len(self.files) == 0: + raise NoAssemblyDirectory() + #take only .s files + + self.instr = {} + self.failed = [] +####-------------------------------------------------------------------------------------------------------- + def __str__(self): + return "**\n ProjectConverter(output_type={}, nibble={}, hexmode={})\n\t- root: {}\n\t- Files: {}\n**".format( + self.converter.output_type, self.converter.nibble, + self.converter.hexMode, self.root, + self.files + ) + + def __len__(self): + return len(self.instr) + + '''def __add__(self, other): + self.instr.extend(other.getInstructions()) + return self''' #fix this +####-------------------------------------------------------------------------------------------------------- + def setOutputType(self, x): + self.converter.setOutputType(x) + + def getOutputType(self): + return self.converter.getOutputType() + + def instructionExists(self, x): + return self.converter.instructionExists(x) + + def setHex(self, x): + self.converter.setHex(x) + + def getFiles(self): + return self.files + + def getInstructions(self): + return self.instr + + def getFailedConvert(self): + return self.failed + + def addDict(self, f, x): + if x != None: + self.instr[f] = x +####-------------------------------------------------------------------------------------------------------- + #convert the whole project to machine + def convert(self, files = []): + self.failed = [] + if len(files) == 0: files = self.files + if self.getOutputType() == 'r': + g = [self.addDict(f, self.catch_convert(f)) for f in files] + return self.instr + no_ret = [catch_convert(f) for f in files] + + def catch_convert(self,f): + try: + return self.converter.convert(self.root + '/' + f) + except: + print("File " + f + " assembly failed") + self.failed.append(f) + + ##-----------PROJECT ASSEMBLY PROTOCOLS-----------## + + # - main idea is to track variables/funcs/filenames through diff files + # - branching is important + # - hierarchy of files: ie what is utils, what is used where + # - func that searches thru files and finds instances, def instance + # - make as new file? \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/assembly/prjtest1/argmax.s b/tests/assembly/prjtest1/argmax.s new file mode 100755 index 0000000..2e760a5 --- /dev/null +++ b/tests/assembly/prjtest1/argmax.s @@ -0,0 +1,65 @@ +.globl argmax + +.text +# ================================================================= +# FUNCTION: Given a int vector, return the index of the largest +# element. If there are multiple, return the one +# with the smallest index. +# Arguments: +# a0 (int*) is the pointer to the start of the vector +# a1 (int) is the # of elements in the vector +# Returns: +# a0 (int) is the first index of the largest element +# +# If the length of the vector is less than 1, +# this function exits with error code 7. +# ================================================================= +argmax: + + addi sp, sp, -12 + sw s0, 0(sp) + sw s1, 4(sp) #loaded val + sw s2, 8(sp) #max index + + addi t0, x0, 1 + blt a1, t0, exit7 + j loop_start + +exit7: + li a1, 7 + j exit2 + +loop_start: + addi t0, x0,0 #i =0 + addi t1, x0, 0, #max val + addi t2, x0, 0 #iteration comp + + j loop_continue +loop_continue: + beq t0, a1, loop_end + + add a0, a0, t2 #increment index + lw s1, 0(a0) #load index + addi t2, x0, 4 #ready to get next value + + bgt s1, t1, newmax #see if num is larger than max + + addi t0, t0, 1 + j loop_continue + +newmax: + addi t1, s1, 0 #set new max value + addi s2, t0, 0 #set max index + + addi t0,t0,1 + j loop_continue +loop_end: + # Epilogue + mv a0, s2 + + lw s0, 0(sp) + lw s1, 4(sp) + lw s2, 8(sp) + addi sp, sp, 12 + + ret \ No newline at end of file diff --git a/tests/assembly/prjtest1/classify.s b/tests/assembly/prjtest1/classify.s new file mode 100755 index 0000000..60ec779 --- /dev/null +++ b/tests/assembly/prjtest1/classify.s @@ -0,0 +1,248 @@ +.globl classify + +.text +classify: + # ===================================== + # COMMAND LINE ARGUMENTS + # ===================================== + # Args: + # a0 (int) argc + # a1 (char**) argv + # a2 (int) print_classification, if this is zero, + # you should print the classification. Otherwise, + # this function should not print ANYTHING. + # Returns: + # a0 (int) Classification + # + # If there are an incorrect number of command line args, + # this function returns with exit code 49. + # + # Usage: + # main.s -m -1 + + + addi sp, sp, -40 + sw s0, 0(sp) + sw s1, 4(sp) + sw s2, 8(sp) + sw s3, 12(sp) + sw s4, 16(sp) + sw s5, 20(sp) + sw s6, 24(sp) + sw s7, 28(sp) + sw s8, 32(sp) + sw ra, 36(sp) + + + addi t0, x0, 5 + bne a0, t0, exit_args #wrong # of args + # ===================================== + # LOAD MATRICES + # ===================================== + + lw s0, 4(a1) #give m0 path to s0 + lw s1, 8(a1) #give m1 path to s1 + lw s2, 12(a1) #give input path to s2 + lw s3, 16(a1) #give output path to s3 + + + # Load pretrained m0 + li a0 20 #malloc row pointer + jal ra malloc + mv s4 a0 #move pointer to s4 + + li a0 20 #malloc column pointer + jal ra malloc + mv s5 a0 #move pointer to s5 + + addi t1, x0, -1 #row m0 + addi t2, x0, -1 #col m0 + sw t1 0(s4) #put int values to pointer + sw t2 0(s5) + + mv a0 s0 + mv a1 s4 + mv a2 s5 + + jal ra read_matrix + + mv s6, a0 #give m0 to s6 + + + + # Load pretrained m1 + + addi s4, s4, 4 + addi s5, s5 4 + + addi t1, x0, -1 #row m1 + addi t2, x0, -1 #col m1 + sw t1 0(s4) + sw t2 0(s5) + + mv a0 s1 + mv a1 s4 + mv a2 s5 + + jal ra read_matrix + + mv s7, a0 #give m1 to s7 + + + # Load input matrix + + addi s4, s4, 4 + addi s5, s5, 4 + + addi t1, x0, -1 #row input + addi t2, x0, -1 #col input + + sw t1 0(s4) + sw t2 0(s5) + + mv a0 s2 + mv a1 s4 + mv a2 s5 + + jal ra read_matrix + + mv s8, a0 #give input matrix to s8 + + # ===================================== + # RUN LAYERS + # ===================================== + # 1. LINEAR LAYER: m0 * input + # 2. NONLINEAR LAYER: ReLU(m0 * input) + # 3. LINEAR LAYER: m1 * ReLU(m0 * input) + + + + addi s4,s4, -8 + addi s5, s5 -8 + + + #hidden layer + lw t1 0(s4) + lw t2 8(s5) + + addi t4, x0, 4 + mul s0 t1 t2 #row m0 * col input + + mul t5, s0, t4 + addi a0 t5 0 + jal ra malloc + + mv a6 a0 + + mv a0 s6 #setup matmul + lw a1 0(s4) + lw a2 0(s5) + mv a3 s8 + lw a4 8(s4) + lw a5 8(s5) + + jal ra matmul + + + #mv s8 a6 #store in s8 + mv s8 a0 + + #ReLU + mv a0 s8 + addi a1 s0 0 + jal ra relu + + #mv s8 a0 #store relu output to s8 + + #mv a0 s8 + #lw a1 0(s4) + #lw a2 8(s5) + #jal ra print_int_array + + lw t1 4(s4) + lw t2 8(s5) + + mul s0 t1 t2 #row m1 * col m0*input + + addi t4, x0, 4 + mul t5 s0 t4 + addi a0 t5 0 + jal ra malloc + + mv a6 a0 + + mv a0 s7 #give m1 + lw a1 4(s4) #m1 row + lw a2 4(s5) #m1 col + mv a3 s8 #m0*input + lw a4 0(s4) #m0 * input row + lw a5 8(s5) #m0 *input col + + jal ra matmul + + mv s8 a0 + + #mv a0 s8 + #lw a1 4(s4) + #lw a2 8(s5) + #jal ra print_int_array + + #lw a1 0(s8) + #jal ra print_int + #mv s8 a6 #store in s8 + + + # ===================================== + # WRITE OUTPUT + # ===================================== + # Write output matrix + + mv a0 s3 #give output path + mv a1 s8 #give mat to write + lw a2 4(s4) #row num + lw a3 8(s5) #col num + + jal ra write_matrix + + # ===================================== + # CALCULATE CLASSIFICATION/LABEL + # ===================================== + # Call argmax + mv a0 s8 #move array to a0 + mv a1 s0 # num of elems + + + jal ra argmax + + # Print classification + mv a1 a0 + jal ra print_int + + # Print newline afterwards for clarity + li a1 '\n' + jal ra print_char + + mv a0 s4 + jal ra free + mv a0 s5 + jal ra free + + lw s0 0(sp) + lw s1 4(sp) + lw s2 8(sp) + lw s3 12(sp) + lw s4 16(sp) + lw s5 20(sp) + lw s6 24(sp) + lw s7 28(sp) + lw s8 32(sp) + lw ra 36(sp) + addi sp, sp 40 + ret + +exit_args: + li a1 49 + j exit2 + + + diff --git a/tests/assembly/prjtest1/dot.s b/tests/assembly/prjtest1/dot.s new file mode 100755 index 0000000..fb3c4e3 --- /dev/null +++ b/tests/assembly/prjtest1/dot.s @@ -0,0 +1,80 @@ +.globl dot + +.text +# ======================================================= +# FUNCTION: Dot product of 2 int vectors +# Arguments: +# a0 (int*) is the pointer to the start of v0 +# a1 (int*) is the pointer to the start of v1 +# a2 (int) is the length of the vectors +# a3 (int) is the stride of v0 +# a4 (int) is the stride of v1 +# Returns: +# a0 (int) is the dot product of v0 and v1 +# +# If the length of the vector is less than 1, +# this function exits with error code 5. +# If the stride of either vector is less than 1, +# this function exits with error code 6. +# ======================================================= +dot: + addi sp, sp, -24 + sw s0, 0(sp) #sum + sw s1, 4(sp) #loaded val v0 + sw s2, 8(sp) #loaded val v1 + sw s3, 12(sp) #product + sw s4, 16(sp) #stride v0 + sw s5, 20(sp) #stride v1 + + addi t5, x0, 1 #exit value + blt a2, t5, exit5 + blt a3, t5, exit6 + blt a4, t5, exit6 + j loop_start + +exit5: + li a1, 5 + j exit2 +exit6: + li a1, 6 + j exit2 + +loop_start: + addi s0, x0, 0 #set sum to 0 + addi t0, x0, 0 #i=0, to keep track of not going over vectorsize + addi t1, x0, 0 #v0 iter = 0 + addi t2, x0, 0 #v1 iter = 0 + addi t3, x0, 4 + mul s4, a3, t3 #v0 stride + mul s5, a4, t3 #v1 stride + + j loop_continue + +loop_continue: + beq t0, a2, loop_end #loop statement + + lw s1, 0(a0) #load v0 + lw s2, 0(a1) #load v1 + + add a0, a0, s4 #getting v0[i], increment by stride + add a1, a1, s5 #getting v1[i], increment by stride + + mul s3, s1, s2 #get product + + add s0, s0, s3 #add to sum + + addi t0, t0, 1 #increment + j loop_continue + +loop_end: + # Epilogue + mv a0, s0 #give a0 return value + + lw s0, 0(sp) #restore and end + lw s1, 4(sp) + lw s2, 8(sp) + lw s3, 12(sp) + lw s4, 16(sp) + lw s5, 20(sp) + addi, sp, sp, 24 + ret \ No newline at end of file diff --git a/tests/assembly/prjtest1/main.s b/tests/assembly/prjtest1/main.s new file mode 100755 index 0000000..51512a0 --- /dev/null +++ b/tests/assembly/prjtest1/main.s @@ -0,0 +1,16 @@ +.import read_matrix.s +.import write_matrix.s +.import matmul.s +.import dot.s +.import relu.s +.import argmax.s +.import utils.s +.import classify.s + +.globl main + +# This is a dummy main function which imports and calls the classify function. +# While it just exits right after, it could always call classify again. +main: + jal classify + jal exit diff --git a/tests/assembly/prjtest1/matmul.s b/tests/assembly/prjtest1/matmul.s new file mode 100755 index 0000000..3b619ae --- /dev/null +++ b/tests/assembly/prjtest1/matmul.s @@ -0,0 +1,153 @@ +.globl matmul +.text +# ======================================================= +# FUNCTION: Matrix Multiplication of 2 integer matrices +# d = matmul(m0, m1) +# The order of error codes (checked from top to bottom): +# If the dimensions of m0 do not make sense, +# this function exits with exit code 2. +# If the dimensions of m1 do not make sense, +# this function exits with exit code 3. +# If the dimensions don't match, +# this function exits with exit code 4. +# Arguments: +# a0 (int*) is the pointer to the start of m0 +# a1 (int) is the # of rows (height) of m0 +# a2 (int) is the # of columns (width) of m0 +# a3 (int*) is the pointer to the start of m1 +# a4 (int) is the # of rows (height) of m1 +# a5 (int) is the # of columns (width) of m1 +# a6 (int*) is the pointer to the the start of d +# Returns: +# None (void), sets d = matmul(m0, m1) +# ======================================================= +matmul: + + # Error checks + + + # Prologue + addi sp, sp, -36 + sw s0, 0(sp) + sw s1, 4(sp) + sw s2, 8(sp) + sw s3, 12(sp) + sw s4, 16(sp) + sw s5, 20(sp) + sw s6, 24(sp) #temp reg for i + sw s7, 28(sp) #temp reg for j + sw ra, 32(sp) + + addi t5, x0, 1 # for exit regidters + addi t0, x0, 0 #i =0 + + mv s0, a0 #store m0 to s0 + mv s1, a1 #store m0 rows + mv s2, a2 #store m0 columns + mv s3, a3 #store m1 to s3 + mv s4, a4 #store m1 rows + mv s5, a5 #store m1 columns + + #m0 dimensions + blt s1,t5 exit20 + blt s2, t5, exit20 + #m1 dimensions + blt s4, t5, exit3 + blt s5, t5, exit3 + #matching dimensions + bne s2, s4, exit4 + + j outer_loop_start + +exit20: + li a1, 2 + j exit2 +exit3: + li a1, 3 + j exit2 +exit4: + li a1, 4 + j exit2 + +outer_loop_start: + beq t0, s1, outer_loop_end + addi t1, x0, 0 #j =0 + + j inner_loop_start + +inner_loop_start: + beq t1, s5 inner_loop_end + mv a0, s0 #point to ith row + mv a1, s3 #points to jth col + + mv a2, s2 #length of vectors + + addi a3, x0, 0 + addi a3, x0, 1 #stride of m0 + + addi a4, x0, 0 + add a4, x0, s5 #stride of m1 + + addi s6, t0,0 + addi s7, t1,0 + jal ra dot + + + addi t0, s6, 0 + addi t1, s7, 0 + + #lw t4, 0(a0) + sw a0, 0(a6) + + #mv a1, a0 + #jal ra print_int + #li a1 '\n' + #jal ra print_char + + addi a6, a6, 4 # go to next in d + + #get ready for next loop + addi s3, s3, 4 #go to next column + + addi t1, t1, 1 # increment j + j inner_loop_start +inner_loop_end: + + addi t3,x0, 4 + mul t2, t3, s2 #add 4* number of columns to get next row + add s0, s0, t2 #go to next row + + addi t2, x0,-4 + mul t3, t2, s5 + add s3, s3, t3 # decrement to go back to first column + + addi t0, t0, 1 #increment i + + j outer_loop_start + + +outer_loop_end: + # Epilogue + addi t4, x0, -4 #t4 = -4 + mul t3, s1,s5 #t3 = rows*cols + mul t3, t3, t4 #t3 *= -4 + add a6, a6, t3 #decrement pointer by length of mat + #add a6, a6, t4 + mv a0, a6 + + + #jal ra print_int + #li a1 '\n' + #jal ra print_char + + lw s0, 0(sp) + lw s1, 4(sp) + lw s2, 8(sp) + lw s3, 12(sp) + lw s4, 16(sp) + lw s5, 20(sp) + lw s6, 24(sp) + lw s7, 28(sp) + lw ra, 32(sp) + addi sp, sp, 36 + ret \ No newline at end of file diff --git a/tests/assembly/prjtest1/read_matrix.s b/tests/assembly/prjtest1/read_matrix.s new file mode 100755 index 0000000..eec1f98 --- /dev/null +++ b/tests/assembly/prjtest1/read_matrix.s @@ -0,0 +1,130 @@ +.globl read_matrix + +.text +# ============================================================================== +# FUNCTION: Allocates memory and reads in a binary file as a matrix of integers +# If any file operation fails or doesn't read the proper number of bytes, +# exit the program with exit code 1. +# FILE FORMAT: +# The first 8 bytes are two 4 byte ints representing the # of rows and columns +# in the matrix. Every 4 bytes afterwards is an element of the matrix in +# row-major order. +# Arguments: +# a0 (char*) is the pointer to string representing the filename +# a1 (int*) is a pointer to an integer, we will set it to the number of rows +# a2 (int*) is a pointer to an integer, we will set it to the number of columns +# Returns: +# a0 (int*) is the pointer to the matrix in memory +# +# If you receive an fopen error or eof, +# this function exits with error code 50. +# If you receive an fread error or eof, +# this function exits with error code 51. +# If you receive an fclose error or eof, +# this function exits with error code 52. +# ============================================================================== +read_matrix: + + # Prologue + addi sp, sp, -24 + sw s0, 0(sp) + sw s1, 4(sp) + sw s2, 8(sp) + sw s3, 12(sp) + sw s4, 16(sp) + sw ra, 20(sp) + + + addi s4, x0, -1 #EOF + mv s0 a0 #filepath to s0 + mv s1 a1 #row pointer to s1 + mv s2 a2 #col pointer to s2 + + mv a1 s0 #give a1 filepath + addi a2 x0 0 #give a2 read permission + jal ra fopen #open file + + + beq a0 s4, exit_fopen #if fopen fails by eof + beq a0 x0, exit_fopen #fopen error + + mv s3 a0 #give file descriptor to s3 + + #read first two integers to s1, s2 + + #make buffer + + mv a1 s3 #give a1 file descriptor + mv a2 s1 #give pointer to # of rows to a2 + li a3 4 #read 4 bytes + jal ra fread + + mv s1 a2 + + #lw a1 0(s1) + #jal ra print_int + #li a1 '\n' + #jal ra print_char + + beq a0 s4, exit_fread #eof + beq a0 x0, exit_fread #fread error + + mv a1 s3 #give a1 file descriptor + mv a2 s2 #give pointer to # of cols to a2 + li a3 4 #read 4 bytes + jal ra fread + + beq a0 s4, exit_fread #eof + beq a0 x0, exit_fread #fread error + + #mv s2 a2 #do some printing + #lw a1 0(s2) + #jal ra print_int + #li a1 '\n' + #jal ra print_char + + #make the matrix pointer + + lw t1 0(s1) + lw t2 0(s2) + mul t3, t1 t2 #number of entries + addi t4, x0, 4 #t4 = 4 + mul t3, t3, t4 #4 bytes * number of entries + + mv a0 t3 + jal ra malloc #malloc new pointer to a0 + + mv a1 s3 # give a1 file descriptor + mv a2 a0 # give a2 the pointer to mat + mv a3 t3 # number of bytes + jal ra fread + + + mv a1 s3 #give a1 the file descriptor + jal ra fclose #close file + + beq a0, s4, exit_fclose #eof + bne a0, x0, exit_fclose #fclose error + + mv a0 a2 # give a0 the pointer to matrix + # Epilogue + + lw s0, 0(sp) + lw s1, 4(sp) + lw s2, 8(sp) + lw s3, 12(sp) + lw s4, 16(sp) + lw ra, 20(sp) + addi sp, sp, 24 + + ret + +exit_fopen: + li a1 50 + j exit2 +exit_fread: + li a1 51 + j exit2 +exit_fclose: + li a1 52 + j exit2 \ No newline at end of file diff --git a/tests/assembly/prjtest1/relu.s b/tests/assembly/prjtest1/relu.s new file mode 100755 index 0000000..20e98f5 --- /dev/null +++ b/tests/assembly/prjtest1/relu.s @@ -0,0 +1,56 @@ +.globl relu + +.text +# ============================================================================== +# FUNCTION: Performs an inplace element-wise ReLU on an array of ints +# Arguments: +# a0 (int*) is the pointer to the array +# a1 (int) is the # of elements in the array +# Returns: +# None +# +# If the length of the vector is less than 1, +# this function exits with error code 8. +# ============================================================================== +relu: + # Prologue + addi sp, sp, -4 + sw s0, 0(sp) + ble a1, x0, exit8 + + addi t0, x0, 1 + blt a1, t0, exit8 + j loop_start + +exit8: + li a1, 8 + j exit2 + +loop_start: + addi t1,x0, 0 # i = 0 + addi t2, x0, 0 + +loop_continue: + beq t1, a1, loop_end + + #mul t2, t2, t1 + add a0, a0, t2 #go up to next index (+4) + lw s0, 0(a0) + addi, t2, x0, 4 + + ble s0,x0, neg + addi t1, t1, 1 #increment in + j loop_continue + +neg: + add, s0,x0,x0 + sw s0, 0(a0) #store 0 into array + addi t1, t1, 1 #increment + j loop_continue + +loop_end: + # Epilogue + lw s0, 0(sp) + addi sp, sp, 4 + + ret \ No newline at end of file diff --git a/tests/assembly/prjtest1/utils.s b/tests/assembly/prjtest1/utils.s new file mode 100755 index 0000000..90b1d63 --- /dev/null +++ b/tests/assembly/prjtest1/utils.s @@ -0,0 +1,379 @@ +#define c_print_int 1 +#define c_print_str 4 +#define c_atoi 5 +#define c_sbrk 9 +#define c_exit 10 +#define c_print_char 11 +#define c_openFile 13 +#define c_readFile 14 +#define c_writeFile 15 +#define c_closeFile 16 +#define c_exit2 17 +#define c_fflush 18 +#define c_feof 19 +#define c_ferror 20 +#define c_printHex 34 + +# ecall wrappers +.globl print_int, print_str, atoi, sbrk, exit, print_char, fopen, fread, fwrite, fclose, exit2, fflush, ferror, print_hex + +# helper functions +.globl file_error, print_int_array, malloc, free, print_num_alloc_blocks, num_alloc_blocks + +.data +error_string: .string "This library file should not be directly called!" + +.text +# Exits if you run this file +main: + la a1 error_string + jal print_str + li a1 1 + jal exit2 +# End main + + +#================================================================ +# void print_int(int a1) +# Prints the integer in a1. +# args: +# a1 = integer to print +# return: +# void +#================================================================ +print_int: + li a0 c_print_int + ecall + ret + + +#================================================================ +# void print_str(char *a1) +# Prints the null-terminated string at address a1. +# args: +# a1 = address of the string you want printed. +# return: +# void +#================================================================ +print_str: + li a0 c_print_str + ecall + ret + + +#================================================================ +# int atoi(char* a1) +# Returns the integer version of the string at address a1. +# args: +# a1 = address of the string you want to turn into an integer. +# return: +# a0 = Integer representation of string +#================================================================ +atoi: + li a0 c_atoi + ecall + ret + + +#================================================================ +# void *sbrk(int a1) +# Allocates a1 bytes onto the heap. +# args: +# a1 = Number of bytes you want to allocate. +# return: +# a0 = Pointer to the start of the allocated memory +#================================================================ +sbrk: + li a0 c_sbrk + ecall + ret + + +#================================================================ +# void noreturn exit() +# Exits the program with a zero exit code. +# args: +# None +# return: +# No Return +#================================================================ +exit: + li a0 c_exit + ecall + + +#================================================================ +# void print_char(char a1) +# Prints the ASCII character in a1 to the console. +# args: +# a1 = character to print +# return: +# void +#================================================================ +print_char: + li a0 c_print_char + ecall + ret + + +#================================================================ +# int fopen(char *a1, int a2) +# Opens file with name a1 with permissions a2. +# args: +# a1 = filepath +# a2 = permissions (0, 1, 2, 3, 4, 5 = r, w, a, r+, w+, a+) +# return: +# a0 = file descriptor +#================================================================ +fopen: + li a0 c_openFile + ecall + ret + + +#================================================================ +# int fread(int a1, void *a2, size_t a3) +# Reads a3 bytes of the file into the buffer a2. +# args: +# a1 = file descriptor +# a2 = pointer to the buffer you want to write the read bytes to. +# a3 = Number of bytes to be read. +# return: +# a0 = Number of bytes actually read. +#================================================================ +fread: + li a0 c_readFile + ecall + ret + + +#================================================================ +# int fwrite(int a1, void *a2, size_t a3, size_t a4) +# Writes a3 * a4 bytes from the buffer in a2 to the file descriptor a1. +# args: +# a1 = file descriptor +# a2 = Buffer to read from +# a3 = Number of items to read from the buffer. +# a4 = Size of each item in the buffer. +# return: +# a0 = Number of elements writen. If this is less than a3, +# it is either an error or EOF. You will also need to still flush the fd. +#================================================================ +fwrite: + li a0 c_writeFile + ecall + ret + + +#================================================================ +# int fclose(int a1) +# Closes the file descriptor a1. +# args: +# a1 = file descriptor +# return: +# a0 = 0 on success, and EOF (-1) otherwise. +#================================================================ +fclose: + li a0 c_closeFile + ecall + ret + + +#================================================================ +# void noreturn exit2(int a1) +# Exits the program with error code a1. +# args: +# a1 = Exit code. +# return: +# This program does not return. +#================================================================ +exit2: + li a0 c_exit2 + ecall + ret + + +#================================================================ +# int fflush(int a1) +# Flushes the data to the filesystem. +# args: +# a1 = file descriptor +# return: +# a0 = 0 on success, and EOF (-1) otherwise. +#================================================================ +fflush: + li a0 c_fflush + ecall + ret + + +#================================================================ +# int ferror(int a1) +# Returns a nonzero value if the file stream has errors, otherwise it returns 0. +# args: +# a1 = file descriptor +# return: +# a0 = Nonzero falue if the end of file is reached. 0 Otherwise. +#================================================================ +ferror: + li a0 c_ferror + ecall + ret + + +#================================================================ +# void print_hex(int a1) +# +# args: +# a1 = The word which will be printed as a hex value. +# return: +# void +#================================================================ +print_hex: + li a0 c_printHex + ecall + ret + + + + +#================================================================ +# void* malloc(int a0) +# Allocates heap memory and return a pointer to it +# args: +# a0 is the # of bytes to allocate heap memory for +# return: +# a0 is the pointer to the allocated heap memory +#================================================================ +malloc: + # Call to sbrk + mv a1 a0 + li a0 0x3CC + addi a6 x0 1 + ecall + ret + + +#================================================================ +# void free(int a0) +# Frees heap memory referenced by pointer +# args: +# a0 is the pointer to heap memory to free +# return: +# void +#================================================================ +free: + mv a1 a0 + li a0 0x3CC + addi a6 x0 4 + ecall + ret + +#================================================================ +# void num_alloc_blocks(int a0) +# Returns the number of currently allocated blocks +# args: +# void +# return: +# a0 is the # of allocated blocks +#================================================================ +num_alloc_blocks: + li a0, 0x3CC + li a6, 5 + ecall + ret + +print_num_alloc_blocks: + addi sp, sp -4 + sw ra 0(sp) + + jal num_alloc_blocks + mv a1 a0 + jal print_int + + li a1 '\n' + jal print_char + + lw ra 0(sp) + addi sp, sp 4 + ret + +#================================================================ +# void print_int_array(int* a0, int a1, int a2) +# Prints an integer array, with spaces between the elements +# args: +# a0 is the pointer to the start of the array +# a1 is the # of rows in the array +# a2 is the # of columns in the array +# return: +# void +#================================================================ +print_int_array: + # Prologue + addi sp sp -24 + sw s0 0(sp) + sw s1 4(sp) + sw s2 8(sp) + sw s3 12(sp) + sw s4 16(sp) + sw ra 20(sp) + + # Save arguments + mv s0 a0 + mv s1 a1 + mv s2 a2 + + # Set outer loop index + li s3 0 + +outer_loop_start: + # Check outer loop condition + beq s3 s1 outer_loop_end + + # Set inner loop index + li s4 0 + +inner_loop_start: + # Check inner loop condition + beq s4 s2 inner_loop_end + + # t0 = row index * len(row) + column index + mul t0 s2 s3 + add t0 t0 s4 + slli t0 t0 2 + + # Load matrix element + add t0 t0 s0 + lw t1 0(t0) + + # Print matrix element + mv a1 t1 + jal print_int + + # Print whitespace + li a1 ' ' + jal print_char + + + addi s4 s4 1 + j inner_loop_start + +inner_loop_end: + # Print newline + li a1 '\n' + jal print_char + + addi s3 s3 1 + j outer_loop_start + +outer_loop_end: + # Epilogue + lw s0 0(sp) + lw s1 4(sp) + lw s2 8(sp) + lw s3 12(sp) + lw s4 16(sp) + lw ra 20(sp) + addi sp sp 24 + + ret diff --git a/tests/assembly/prjtest1/write_matrix.s b/tests/assembly/prjtest1/write_matrix.s new file mode 100755 index 0000000..1b70dab --- /dev/null +++ b/tests/assembly/prjtest1/write_matrix.s @@ -0,0 +1,133 @@ +.globl write_matrix + +.text +# ============================================================================== +# FUNCTION: Writes a matrix of integers into a binary file +# If any file operation fails or doesn't write the proper number of bytes, +# exit the program with exit code 1. +# FILE FORMAT: +# The first 8 bytes of the file will be two 4 byte ints representing the +# numbers of rows and columns respectively. Every 4 bytes thereafter is an +# element of the matrix in row-major order. +# Arguments: +# a0 (char*) is the pointer to string representing the filename +# a1 (int*) is the pointer to the start of the matrix in memory +# a2 (int) is the number of rows in the matrix +# a3 (int) is the number of columns in the matrix +# Returns: +# None +# +# If you receive an fopen error or eof, +# this function exits with error code 53. +# If you receive an fwrite error or eof, +# this function exits with error code 54. +# If you receive an fclose error or eof, +# this function exits with error code 55. +# ============================================================================== +write_matrix: + + # Prologue + addi sp, sp, -32 + sw s0, 0(sp) + sw s1, 4(sp) + sw s2, 8(sp) + sw s3, 12(sp) + sw s4, 16(sp) + sw s5, 20(sp) + sw s6, 24(sp) + sw ra, 28(sp) + + addi s5 x0 -1 #EOF + mv s0 a0 #filename to s0 + mv s1 a1 #matrix pointer to s1 + mv s2 a2 #row number to s2 + mv s3 a3 #col number to s3 + + #Open file + + mv a1 s0 #filename to a1 + li a2 4 #permission w+ (4) to a2 + jal ra fopen + + mv s4 a0 #file descriptor to s4 + + beq s4 s5, exit_fopen #eof + beq s4 x0, exit_fopen #fopen error + + #Write file + #make pointer for buffer + + li a0 4 + jal ra malloc + mv s6 a0 #give s6 pointer + + sw s2 0(s6) + + mv a1 s4 #file descriptor + mv a2 s6 #write row + li a3 1 #1 item + li a4 4 #4 bytes + jal ra fwrite + + blt a0 a3, exit_fwrite + #flush the fd? + + sw s3 0(s6) + + mv a1 s4 #file descriptor + mv a2 s6 #write col + li a3 1 #1 item + li a4 4 #4 bytes + jal ra fwrite + + blt a0 a3, exit_fwrite + + mv a1 s4 #file descriptor + mv a2 s1 #write matrix + mul t1 s2 s3 # row * col items + addi a3, t1, 0 + #li a3 9 + li a4 4 # 4 bytes per item + jal ra fwrite + + #addi a1 a0 0 + #jal ra print_int + #addi a1 a0 0 + #jal ra print_int + + + blt a0 a3, exit_fwrite + + #flush? + + #close file + mv a1 s4 + jal ra fclose #close the file + + beq a0 s5, exit_fclose + + mv a0 s6 + jal ra free #free pointer + + # Epilogue + lw s0 0(sp) + lw s1 4(sp) + lw s2 8(sp) + lw s3 12(sp) + lw s4 16(sp) + lw s5 20(sp) + lw s6 24(sp) + lw ra 28(sp) + addi sp, sp, 32 + + ret + +exit_fopen: + li a1 53 + j exit2 +exit_fwrite: + li a1 54 + j exit2 +exit_fclose: + li a1 55 + j exit2 \ No newline at end of file diff --git a/tests/assembly/test0.s b/tests/assembly/test0.s new file mode 100644 index 0000000..e1eac7f --- /dev/null +++ b/tests/assembly/test0.s @@ -0,0 +1 @@ +add x1 x0 x0 \ No newline at end of file diff --git a/tests/assembly/test1.s b/tests/assembly/test1.s new file mode 100644 index 0000000..3b87d67 --- /dev/null +++ b/tests/assembly/test1.s @@ -0,0 +1 @@ +addi t0 s0 32 \ No newline at end of file diff --git a/tests/assembly/test2.s b/tests/assembly/test2.s new file mode 100644 index 0000000..7617c42 --- /dev/null +++ b/tests/assembly/test2.s @@ -0,0 +1,7 @@ +addi s0 x0 10 +addi s1 x0 10 + +beq s1 s0 loop + +loop: + addi s1 s0 -32 diff --git a/tests/assembly/test3.s b/tests/assembly/test3.s new file mode 100644 index 0000000..b087478 --- /dev/null +++ b/tests/assembly/test3.s @@ -0,0 +1 @@ +sw s0, 0(sp) \ No newline at end of file diff --git a/tests/assembly/test4.s b/tests/assembly/test4.s new file mode 100644 index 0000000..b1427f8 --- /dev/null +++ b/tests/assembly/test4.s @@ -0,0 +1,4 @@ +add x1 x0 x0 +addi t0 s0 32 +addi t0 s0 32 +sw s0, 0(sp) \ No newline at end of file diff --git a/tests/test_class.py b/tests/test_class.py new file mode 100644 index 0000000..792d623 --- /dev/null +++ b/tests/test_class.py @@ -0,0 +1,165 @@ +import pytest +from pathlib import Path +from riscv_assembler.convert import AssemblyConverter as AC +from riscv_assembler.parse import Parser +#TESTS + +#test simple.s file, writes to txt and bin +def func0(): + #test convert, should return array + cnv = AC() + + path = str(Path(__file__).parent / "assembly/test0.s") + return cnv(path) + +def func1(): + #test convert + cnv = AC() + + path = str(Path(__file__).parent / "assembly/test1.s") + return cnv(path) + +def func2(): + #test get/set OutpuType + outarr = [] + cnv = AC() + + outarr += [cnv.output_mode] + cnv.output_mode = 'p' + cnv.output_mode = 'f' + outarr += [cnv.output_mode] + + return outarr + +def func4(): + #test nibble form for convert + cnv = AC(nibble_mode = True) + + path = str(Path(__file__).parent / "assembly/test0.s") + return cnv(path) + +def func5(): + #test nibbleForm for convert + cnv = AC(nibble_mode = True) + + path = str(Path(__file__).parent / "assembly/test1.s") + return cnv(path) + +def func6(): + # test clone + + cnv = AC(output_mode = 'p', nibble_mode = True, hex_mode = True) + + cnv2 = cnv.clone() + + return [cnv2.output_mode, cnv2.nibble_mode, cnv2.hex_mode] + +def func7(): + #test calcJump() + path = str(Path(__file__).parent / "assembly/test2.s") + + cnv = AC(filename = path) + + return cnv.calcJump("loop",2) #3-1 + +def func8(): + #test hex + out_arr = [] + cnv = AC(hex_mode = True) + + path = str(Path(__file__).parent / "assembly/test0.s") + out_arr += cnv(path) + + path = str(Path(__file__).parent / "assembly/test1.s") + out_arr += cnv(path) + + return out_arr + +def func9(): + # test tokenizer + line = "add x0 x0 x1" + + result = Parser.tokenize(line) + + return result + +def func10(): + line = "add x0 x0 x1" + tokens = Parser.tokenize(line) + + return str(Parser.determine_type(tokens[0])) + +def func11(): + line = "" + tokens = Parser.tokenize(line) + + return tokens + +def func12(): + cnv = AC(hex_mode = True, output_mode='a') + + path = str(Path(__file__).parent / "assembly/test2.s") + + return cnv(path) + +def func13(): + cnv = AC(hex_mode = True, output_mode='a') + + path = str(Path(__file__).parent / "assembly/test3.s") + + return cnv(path) + +def func14(): + cnv = AC(hex_mode = True, output_mode='a') + + instr = 'add x1 x0 x0\naddi t0 s0 32\naddi t0 s0 32\nsw s0, 0(sp)' + + return cnv(instr) + +#----------------------------------------------------------------------------------------- +#----------------------------------------------------------------------------------------- +#----------------------------------------------------------------------------------------- + + +def test_0(): + assert func0() == ['00000000000000000000000010110011'], "Test 0 Failed" + +def test_1(): + assert func1() == ['00000010000001000000001010010011'], "Test 1 Failed" + +def test_2(): + assert func2() == ["a", "f"], "Test 2 Failed" + +def test_4(): + assert func4() == ['0000\t0000\t0000\t0000\t0000\t0000\t1011\t0011'], "Test 4 Failed" + +def test_5(): + assert func5() == ['0000\t0010\t0000\t0100\t0000\t0010\t1001\t0011'], "Test 5 Failed" + +def test_6(): + assert func6() == ['p', True, True], "Test 6 Failed" + +#def test_7(): +# assert func7() == 4 + +def test_8(): + assert func8() == ['0x000000b3', '0x02040293'], "Test 8 Failed" + +def test_9(): + assert func9() == ['add', 'x0', 'x0', 'x1'], "Test 9 Failed" + +def test_10(): + assert func10() == 'R Parser', "Test 10 Failed" + +def test_11(): + assert func11() == [] + +# Test file test2.s, need to implement JUMP +def test_12(): + assert func12() == ['0x00a00413', '0x00a00493', '0x00848263', '0xfe040493'] + +def test_13(): + assert func13() == ['0x00812023'] + +def test_14(): + assert func14() == ['0x000000b3', '0x02040293', '0x02040293','0x00812023'] \ No newline at end of file