From 98f142e60bff2a8f4222738e2b9d82be1e0c6c7c Mon Sep 17 00:00:00 2001 From: AnonKyure <132247914+AnonKyure@users.noreply.github.com> Date: Fri, 19 May 2023 20:18:19 +0530 Subject: [PATCH] Update assembler.py --- assembler.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/assembler.py b/assembler.py index 00b6815..b9884dc 100644 --- a/assembler.py +++ b/assembler.py @@ -17,7 +17,7 @@ code=sys.stdin.read().splitlines() # --------------------------------------------------------------------taking input from test case file ------------------------------------------------- -# with open('test_case1.txt') as file1: +# with open('t.txt') as file1: # code = file1.read().splitlines() # ----------------------------------------------file to which the out generated will be written----------------------------------------------------------- @@ -130,7 +130,7 @@ def f3(a, b): f1() return result -import numpy as np +# import numpy as np def f4(): operaion3 = [[0,0,3],[0,5,6],[0,8,9]] @@ -297,10 +297,11 @@ def f4(): f2() f4() f3(f1(),f2()) - if (operation=='mov' and value[2][0] =='$'): - if (value[2] not in var and value[2] not in lab): + if (operation=='mov' and value[2][0] !='$'): + if (value[2] not in var and value[2] not in lab and value[2] not in flags): error_message = f"error inncorrect immediate value enetred in line {c}" print(f"error inncorrect immediate value enetred in line {c}") + error=True file2.write(error_message) file2.write("\n") @@ -312,6 +313,7 @@ def f4(): if(value[2] not in var and value[2] not in lab): error_message = f"error inncorrect immediate value enetred in line {c}" print(f"error inncorrect immediate value enetred in line {c}") + error=True file2.write(error_message) file2.write("\n") @@ -319,6 +321,7 @@ def f4(): if(value[2] not in var and value[2] not in lab): error_message = f"error inncorrect immediate value enetred in line {c}" print(f"error inncorrect immediate value enetred in line {c}") + error=True file2.write(error_message) file2.write("\n") @@ -326,6 +329,7 @@ def f4(): if(value[1] not in var and value[1] not in lab): error_message = f"error inncorrect immediate value enetred in line {c}" print(f"error inncorrect immediate value enetred in line {c}") + error=True file2.write(error_message) file2.write("\n") @@ -516,6 +520,7 @@ def f4(): #******************************************************************************************************************# # checking for not using hlt missing and at end +h=False c=0 f1() f2() @@ -532,6 +537,7 @@ def f4(): file2.write(error_message) file2.write("\n") error=True + h=True except: if ('hlt' not in main_lst[le-1]): @@ -540,9 +546,10 @@ def f4(): file2.write(error_message) file2.write("\n") error=True + h=True # nothing should be after halt -if ('hlt' not in main_lst[le-1]): +if ('hlt' not in main_lst[le-1] and h==False): error_message = "cant execute lines after hlt" print("cant execute lines after hlt") file2.write(error_message) @@ -655,6 +662,14 @@ def f4(): file2.write("\n") print(s) + elif(operation=='mov' and value[2]=='FLAGS'): + a = value[1] + b = value[2] + s = operations['mov2'][0] + "00000" + RegAddress[a] + RegAddress[b] + file2.write(s) + file2.write("\n") + print(s) + elif operation in opr_sym: # matching the values with op_mnemoics case = operations[operation][1] @@ -699,4 +714,4 @@ def f4(): -# ***********************************************THE END***************************************************** \ No newline at end of file +# ***********************************************THE END*****************************************************