diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-10-29 13:16:25 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-10-29 13:16:25 +0200 |
| commit | 80d78c5589d42f81b04e671b28c103a2112458d1 (patch) | |
| tree | 81390d685648d25dd05dfa0092deb0587821cf5a /tasm/src | |
| parent | b7525c84619f7bc28bcd3c43aa119d1c6bc23b6d (diff) | |
| download | tri-80d78c5589d42f81b04e671b28c103a2112458d1.tar.gz tri-80d78c5589d42f81b04e671b28c103a2112458d1.zip | |
move common stuff to core
+ Might have to come up with a better name, but works for now
Diffstat (limited to 'tasm/src')
| -rw-r--r-- | tasm/src/assembler.c | 2 | ||||
| -rw-r--r-- | tasm/src/bits.c | 75 | ||||
| -rw-r--r-- | tasm/src/parser.y | 4 |
3 files changed, 3 insertions, 78 deletions
diff --git a/tasm/src/assembler.c b/tasm/src/assembler.c index 9f6dc95..3faf1fb 100644 --- a/tasm/src/assembler.c +++ b/tasm/src/assembler.c @@ -1,6 +1,6 @@ #include <tasm/assembler.h> #include <tasm/parser.h> -#include <tasm/bits.h> +#include <bits.h> #include <string.h> #include <unistd.h> diff --git a/tasm/src/bits.c b/tasm/src/bits.c deleted file mode 100644 index 7a54632..0000000 --- a/tasm/src/bits.c +++ /dev/null @@ -1,75 +0,0 @@ -#include <tasm/bits.h> - -tri_t parse_opcode(tri_t i) -{ - /* opcode is lowest five trits */ - return tri_mask(i, 5); -} - -tri_t build_r(tri_t opcode, tri_t rd, tri_t fn0, tri_t rs1, tri_t rs2, tri_t fn5) -{ - return opcode - | tri_sl(rd , 5) - | tri_sl(fn0, 9) - | tri_sl(rs1, 14) - | tri_sl(rs2, 18) - | tri_sl(fn5, 22); -} - -void parse_r(tri_t i, tri_t *rd, tri_t *fn0, tri_t *rs1, tri_t *rs2, tri_t *fn5) -{ - *rd = tri_mask(tri_sr(i, 5), 4); - *fn0 = tri_mask(tri_sr(i, 9), 5); - *rs1 = tri_mask(tri_sr(i, 14), 4); - *rs2 = tri_mask(tri_sr(i, 18), 4); - *fn5 = tri_mask(tri_sr(i, 22), 5); -} - -tri_t build_i(tri_t opcode, tri_t rd, tri_t fn0, tri_t rs1, tri_t imm9) -{ - return opcode - | tri_sl(rd , 5) - | tri_sl(fn0 , 9) - | tri_sl(rs1 , 14) - | tri_sl(imm9, 18); -} - -void parse_i(tri_t i, tri_t *rd, tri_t *fn0, tri_t *rs1, tri_t *imm9) -{ - *rd = tri_mask(tri_sr(i, 5), 4); - *fn0 = tri_mask(tri_sr(i, 9), 5); - *rs1 = tri_mask(tri_sr(i, 14), 4); - *imm9 = tri_mask(tri_sr(i, 18), 9); -} - -tri_t build_s(tri_t opcode, tri_t imm4, tri_t fn0, tri_t rs1, tri_t rs2, tri_t imm5) -{ - return opcode - | tri_sl(imm4, 5) - | tri_sl(fn0 , 9) - | tri_sl(rs1 , 14) - | tri_sl(rs2 , 18) - | tri_sl(imm5, 22); -} - -void parse_s(tri_t i, tri_t *imm4, tri_t *fn0, tri_t *rs1, tri_t *rs2, tri_t *imm5) -{ - *imm4 = tri_mask(tri_sr(i, 5), 4); - *fn0 = tri_mask(tri_sr(i, 9), 5); - *rs1 = tri_mask(tri_sr(i, 14), 4); - *rs2 = tri_mask(tri_sr(i, 18), 4); - *imm5 = tri_mask(tri_sr(i, 22), 5); -} - -tri_t build_u(tri_t opcode, tri_t rd, tri_t imm18) -{ - return opcode - | tri_sl(rd , 5) - | tri_sl(imm18, 9); -} - -void parse_u(tri_t i, tri_t *rd, tri_t *imm18) -{ - *rd = tri_mask(tri_sr(i, 5), 4); - *imm18 = tri_mask(tri_sr(i, 9), 18); -} diff --git a/tasm/src/parser.y b/tasm/src/parser.y index 559cbba..64418d1 100644 --- a/tasm/src/parser.y +++ b/tasm/src/parser.y @@ -13,8 +13,8 @@ #include <tasm/assembler.h> #include <tasm/parser.h> -#include <tasm/bits.h> -#include <tasm/regs.h> +#include <bits.h> +#include <regs.h> #include <tri.h> %} |
