1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| code_1=[[18, 0, 0], [18, 1, 1], [18, 2, 2], [18, 3, 3], [18, 6, 6], [18, 7, 7], [1, 0, 105], [1, 1, 110], [1, 2, 112], [1, 3, 117], [1, 6, 116], [1, 7, 32], [24, 0, 18446744073709551615], [24, 1, 18446744073709551615], [24, 2, 18446744073709551615], [24, 3, 18446744073709551615], [24, 6, 18446744073709551615], [24, 7, 18446744073709551615], [1, 0, 102], [1, 1, 108], [1, 2, 97], [1, 3, 103], [1, 6, 58], [1, 7, 32], [24, 0, 18446744073709551615], [24, 1, 18446744073709551615], [24, 2, 18446744073709551615], [24, 3, 18446744073709551615], [24, 6, 18446744073709551615], [24, 7, 18446744073709551615], [18, 1, 1], [23, 0, 18446744073709551615], [5, 0, 18446744073709551615], [7, 1, 1], [26, 1, 38], [30, 31, 18446744073709551615], [25, 18446744073709551615, 18446744073709551615], [18, 2, 2]]
code_2=[[6, 0, 18446744073709551615], [26, 0, 125], [28, 18, 18446744073709551615], [1, 0, 119], [1, 1, 114], [1, 2, 111], [1, 3, 110], [1, 6, 103], [1, 7, 33], [24, 0, 18446744073709551615], [24, 1, 18446744073709551615], [24, 2, 18446744073709551615], [24, 3, 18446744073709551615], [24, 6, 18446744073709551615], [24, 7, 18446744073709551615], [1, 0, 10], [24, 0, 18446744073709551615], [25, 18446744073709551615, 18446744073709551615], [1, 8, 256], [26, 8, 225], [30, 25, 18446744073709551615], [6, 0, 18446744073709551615], [4, 8, 0], [9, 8, 1], [29, 19, 18446744073709551615], [6, 0, 18446744073709551615], [26, 0, 123], [31, 3, 18446744073709551615], [6, 0, 18446744073709551615], [26, 0, 103], [31, 3, 18446744073709551615], [6, 0, 18446744073709551615], [26, 0, 97], [31, 3, 18446744073709551615], [6, 0, 18446744073709551615], [26, 0, 108], [31, 3, 18446744073709551615], [6, 0, 18446744073709551615], [26, 0, 102], [31, 3, 18446744073709551615], [18, 9, 9], [1, 10, 225], [3, 7, 9], [3, 6, 10], [17, 6, 66], [13, 6, 2], [27, 6, 7], [31, 3, 18446744073709551615], [7, 9, 1], [7, 10, 1], [26, 9, 32], [30, 42, 18446744073709551615], [1, 0, 99], [1, 1, 111], [1, 2, 114], [1, 3, 114], [1, 6, 101], [1, 7, 99], [24, 0, 18446744073709551615], [24, 1, 18446744073709551615], [24, 2, 18446744073709551615], [24, 3, 18446744073709551615], [24, 6, 18446744073709551615], [24, 7, 18446744073709551615], [1, 0, 116], [1, 1, 108], [1, 2, 121], [1, 3, 33], [1, 6, 10], [24, 0, 18446744073709551615], [24, 1, 18446744073709551615], [24, 2, 18446744073709551615], [24, 3, 18446744073709551615], [24, 6, 18446744073709551615], [25, 18446744073709551615, 18446744073709551615]]
code_3=[[18, 2, 2], [0, 2, 255], [7, 2, 1], [0, 2, 547], [7, 2, 1], [0, 2, 571], [7, 2, 1], [0, 2, 567], [7, 2, 1], [0, 2, 567], [7, 2, 1], [0, 2, 587], [7, 2, 1], [0, 2, 555], [7, 2, 1], [0, 2, 251], [7, 2, 1], [0, 2, 555], [7, 2, 1], [0, 2, 547], [7, 2, 1], [0, 2, 591], [7, 2, 1], [0, 2, 239], [7, 2, 1], [0, 2, 567], [7, 2, 1], [0, 2, 239], [7, 2, 1], [0, 2, 591], [7, 2, 1], [0, 2, 591], [7, 2, 1], [0, 2, 547], [7, 2, 1], [0, 2, 547], [7, 2, 1], [0, 2, 571], [7, 2, 1], [0, 2, 567], [7, 2, 1], [0, 2, 255], [7, 2, 1], [0, 2, 563], [7, 2, 1], [0, 2, 563], [7, 2, 1], [0, 2, 563], [7, 2, 1], [0, 2, 567], [7, 2, 1], [0, 2, 587], [7, 2, 1], [0, 2, 563], [7, 2, 1], [0, 2, 591], [7, 2, 1], [0, 2, 555], [7, 2, 1], [0, 2, 555], [7, 2, 1], [0, 2, 587], [7, 2, 1], [0, 2, 239], [7, 2, 1], [25, 18446744073709551615, 18446744073709551615]]
code_4=[[18, 2, 2], [3, 0, 2], [9, 0, 99], [4, 2, 0], [7, 2, 1], [26, 2, 32], [30, 1, 18446744073709551615], [25, 18446744073709551615, 18446744073709551615]]
def VM_Parser(op): VM_Inst={ 0:"mov Mem[Reg[{Lnum}]] , {Rnum}", 1:"mov Reg[{Lnum}] , {Rnum}" , 2:"mov Reg[{Lnum}] , Reg[{Rnum}]" , 3:"mov Reg[{Lnum}] , Mem[Reg[{Rnum}]]", 4:"mov Mem[Reg[{Lnum}]] , Reg[{Rnum}]", 5:"push Reg[{Lnum}]", 6:"pop Reg[{Lnum}]", 7:"add Reg[{Lnum}] , {Rnum}", 8:"add Reg[{Lnum}] , Reg[{Rnum}]", 9:"sub Reg[{Lnum}] , {Rnum}", 0xA:"sub Reg[{Lnum}] , Reg[{Rnum}]", 0xB:"mul Reg[{Lnum}] , {Rnum}", 0xC:"mul Reg[{Lnum}] , Reg[{Rnum}]", 0xD:"shl Reg[{Lnum}] , {Rnum}", 0xE:"shl Reg[{Lnum}] , Reg[{Rnum}]", 0xF:"shr Reg[{Lnum}] , {Rnum}", 0x11:"xor Reg[{Lnum}] , {Rnum}", 0x12:"xor Reg[{Lnum}] , Reg[{Rnum}]", 0x13:"or Reg[{Lnum}] , {Rnum}", 0x14:"or Reg[{Lnum}] , Reg[{Rnum}]", 0x15:"and Reg[{Lnum}] , {Rnum}", 0x16:"and Reg[{Lnum}] , Reg[{Rnum}]", 0x17:"Reg[{Lnum}] = getchar()", 0x18:"putchar() = Reg[{Lnum}]", 0x19:"exit()", 0x1A:"cmp Reg[{Lnum}] , {Rnum}", 0x1B:"cmp Reg[{Lnum}] , Reg[{Rnum}]", 0x1C:"je {Lnum}", 0x1D:"jmp {Lnum}", 0x1E: "jb {Lnum}", 0x1F:"jne {Lnum}"
} tmp = [] for i in range(len(op)): Inst=op[i] adr=Inst[0] Lnum=Inst[1] Rnum=Inst[2] print('%s: '%hex(i)+VM_Inst[adr].format(Lnum=hex(Lnum),Rnum=hex(Rnum)).replace('[0x','[')) VM_Parser(code_1) print('------code_end------') VM_Parser(code_2) print('------code_end------') VM_Parser(code_3) print('------code_end------') VM_Parser(code_4)
|