summaryrefslogtreecommitdiff
path: root/src/util.lisp
blob: 027a770d3531753f08ed293773b315cb728cc4be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(in-package #:util)

(defun asm-extension? (file)
  "Returns t if FILE is extended with .asm, nil otherwise."
  (string= (pathname-type file) "asm"))

;; TODO this won't work for negative numbers of odd sizes quite yet.
(defun format-as-binary (num len)
  "Formats NUM as a binary number, and pads to LEN with zeros."
  (declare (type number        num))
  (declare (type (integer 0 *) len))
  (format nil "~V,'0b" len num))

(defparameter type-r
  '(ADD SUB MUL QUOT REM SFTR SFTL AND OR NOT XOR ADDV SUBV MULV DIVV CMP CEV)
  "R-type instructions.")

(defparameter type-i
  '(LOAD LOADV ADDI SUBI SFTRI SFTLI ANDI ORI XORI STORE STOREV MOV)
  "I-type instructions.")

(defparameter type-j
  '(JMP JRL JAL BEQ BGT BUF BOF PUSH POP)
  "J-type instructions.")