From c776b3cbe25140088d4fb3abdbe9cdb7c3a9ed16 Mon Sep 17 00:00:00 2001 From: kris Date: Mon, 7 Dec 2020 21:06:00 +0000 Subject: [PATCH] Refactor to allow passing in other opcode sequences --- generate_player.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/generate_player.py b/generate_player.py index cad4714..480cfce 100644 --- a/generate_player.py +++ b/generate_player.py @@ -71,21 +71,15 @@ def all_opcodes( num_opcodes += 1 -def generate_player( - max_cycles: int, opcodes: List[Opcode], start_opcodes: List[Opcode], - opcode_filename: str, player_filename: str): +def generate_player(player_ops: List[Tuple[Opcode]], opcode_filename: str, + player_filename: str): num_bytes = 0 - seqs = {} num_op = 0 offset = 0 unique_opcodes = {} - all_ops = sorted( - list(all_opcodes(max_cycles, opcodes, start_opcodes)), - key=lambda o: len(o), reverse=True) - with open(player_filename, "w+") as f: - for i, k in enumerate(all_ops): + for i, k in enumerate(player_ops): is_unique = False player_op = [] player_op_len = 0 @@ -130,8 +124,16 @@ def generate_player( f.write("}\n") +def all_opcode_combinations( + max_cycles: int, opcodes: List[Opcode], start_opcodes: List[Opcode] +) -> List[Tuple[Opcode]]: + return sorted( + list(all_opcodes(max_cycles, opcodes, start_opcodes)), + key=lambda o: len(o), reverse=True) + + if __name__ == "__main__": - generate_player( + player_ops = all_opcode_combinations( max_cycles=19, # TODO: flag opcodes=[ Opcode.NOP, @@ -142,7 +144,9 @@ if __name__ == "__main__": # Opcode.STAX ], start_opcodes=[Opcode.STA, Opcode.INC, Opcode.INCX, Opcode.STAX, - Opcode.JMP_INDIRECT], + Opcode.JMP_INDIRECT]) + generate_player( + player_ops, opcode_filename="opcodes_generated.py", player_filename="player/player_generated.s" )