print("print_float(");
    public void visitPrintStatement(SIRPrintStatement self,                                    JExpression exp)    {	CType type = null;		try {	    type = exp.getType();	}	catch (Exception e) {	    System.err.println("Cannot get type for print statement");	    type = CStdType.Integer;	}		//if we have the number gathering stuff on, convert each print 	//to a magic instruction, there are only print statements in the sink	//all other prints have been removed...	if (KjcOptions.numbers > 0) {	    //assign the expression to a dummy var do it does not get	    //optimized out...	    print("dummy");	    if (type.isFloatingPoint())		print("Float");	    else 		print("Int");	    print(" = ");	    exp.accept(this);	    print(";\n");	    print("__asm__ volatile (\"magc $0, $0, 2\");\n");	    return;	}	    	if (type.equals(CStdType.Boolean))	    {		Utils.fail("Cannot print a boolean");	    }	else if (type.equals(CStdType.Byte) ||		 type.equals(CStdType.Integer) ||		 type.equals(CStdType.Short))	    {		if (!KjcOptions.standalone) {		    //print("print_int(");		    print("raw_test_pass_reg(");		}				else		    print("printf(\"%d\\n\", "); 		//print("gdn_send(" + INT_HEADER_WORD + ");\n");		//print("gdn_send(");		exp.accept(this);		print(");");	    }	else if (type.equals(CStdType.Char))	    {		if (!KjcOptions.standalone) {		    print("raw_test_pass_reg(");		    print("print_int(");		}		else		    print("printf(\"%d\\n\", "); 		//print("gdn_send(" + INT_HEADER_WORD + ");\n");		//print("gdn_send(");		exp.accept(this);		print(");");	    }	else if (type.equals(CStdType.Float))	    {		if (!KjcOptions.standalone) {		    print("raw_test_pass_reg(");		    print("print_float(");		}		else 		    print("printf(\"%f\\n\", "); 		//print("gdn_send(" + FLOAT_HEADER_WORD + ");\n");		//print("gdn_send(");		exp.accept(this);		print(");");	    }        else if (type.equals(CStdType.Long))	    {		if (!KjcOptions.standalone) {		    print("raw_test_pass_reg(");		    print("print_int(");		}				else		    print("printf(\"%d\\n\", "); 		//		print("gdn_send(" + INT_HEADER_WORD + ");\n");		//print("gdn_send(");		exp.accept(this);		print(");");	    }	else if (type.equals(CStdType.String)) 	    {		if (!KjcOptions.standalone)		    print("print_string(");		else		    print("printf(\"%s\\n\", "); 		//		print("gdn_send(" + INT_HEADER_WORD + ");\n");		//print("gdn_send(");		exp.accept(this);		print(");");	    }	else	    {		System.out.println("Unprintatble type");		print("print_int(");		exp.accept(this);		print(");");		//Utils.fail("Unprintable Type");	    }    }