From 14f44f820678ea649dd6982ab4dfc7c17d337d6f Mon Sep 17 00:00:00 2001 From: Connor Olding Date: Wed, 25 Nov 2015 10:28:55 -0800 Subject: [PATCH] add remaining instructions --- README.md | 3 ++- lips.lua | 18 ++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d9a5466..91b2400 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ First-time writers of MIPS assembly may find this the most useful. ### Unimplemented -* BC1F, BC1FL, BC1T, BC1TL +As far as I know, all native R4300i instructions have been implemented. +Whether or not they output the proper machine code is another thing. ### Unimplemented Pseudo-Instructions diff --git a/lips.lua b/lips.lua index c02c06e..511ea79 100644 --- a/lips.lua +++ b/lips.lua @@ -339,8 +339,10 @@ local instructions = { ROUND_W_S={17, 'DS', 'F0SDC', 12, fmt_single}, SQRT_D = {17, 'DS', 'F0SDC', 4, fmt_double}, SQRT_S = {17, 'DS', 'F0SDC', 4, fmt_single}, + TRUNC_L_D={17, 'DS', 'F0SDC', 9, fmt_double}, TRUNC_L_S={17, 'DS', 'F0SDC', 9, fmt_single}, TRUNC_W_D={17, 'DS', 'F0SDC', 13, fmt_double}, + TRUNC_W_S={17, 'DS', 'F0SDC', 13, fmt_double}, TEQI = {1, 'si', 'sCi', 12}, TGEI = {1, 'si', 'sCi', 8}, @@ -359,15 +361,11 @@ local instructions = { TLBWI = {16, '', 'F000C', 2, 16}, TLBWR = {16, '', 'F000C', 6, 16}, - -- 'c' is unimplemented - --BC1F = {17, 'co', 'Cco', 8, 0}, - --BC1FL = {17, 'co', 'Cco', 8, 2}, - --BC1T = {17, 'co', 'Cco', 8, 1}, - --BC1TL = {17, 'co', 'Cco', 8, 3}, - BC1F = {}, - BC1FL = {}, - BC1T = {}, - BC1TL = {}, + -- only one condition code on the R4300i? + BC1F = {17, 'r', 'FCo', 0, 8}, + BC1FL = {17, 'r', 'FCo', 2, 8}, + BC1T = {17, 'r', 'FCo', 1, 8}, + BC1TL = {17, 'r', 'FCo', 3, 8}, -- pseudo-instructions B = {4, 'r', '00o'}, @@ -377,7 +375,7 @@ local instructions = { MOVE = {0, 'dt', '0td0C', 32}, NEG = {0, 'ds', 's0d0C', 34}, NOP = {0, '', '0'}, - NOR = {0, 'dst', 's0d0C', 39}, + NOT = {0, 'ds', 's0d0C', 39}, SUBI = {8, 'tsk', 'sti'}, SUBIU = {9, 'tsk', 'sti'},