Пример #1
0
 def expr_assign(self, args):
     if args[0]['value_type'] != args[1]['value_type'] and not Class.areConvertable(args[0]['value_type'],args[1]['value_type']):
         raise Exception("Types of Right Hand Side of Assign is not the same as Left Side" )
     value_type = args[0]['value_type']
     code = "# Left Hand Side Assign\n"
     code += args[0]['code']
     code += "# Right Hand Side Assign\n"
     code += args[1]['code']
     code += "# Assign Right Side to Left\n"
     code += "lw $t0 , 8($sp)\n"
     if value_type == 'double':
         code += "l.s $f0 , 4($sp)\n"
         code += "s.s $f0 , 0($t0)\n"
         code += "s.s $f0 , 8($sp)\n"
     else:
         code += "lw $t1 , 4($sp)\n"
         code += "sw $t1 , 0($t0)\n"
         code += "sw $t1 , 8($sp)\n"
     code += "addi $sp , $sp , 4\n"
     return {'code' : code,
             'value_type' : value_type}