Example #1
0
Stmt *arm_translate_put( IRStmt *stmt, IRSB *irbb, vector<Stmt *> *irout )
{
  int offset = stmt->Ist.Put.offset;

  Exp *data = translate_expr(stmt->Ist.Put.data, irbb, irout);

  assert(typeOfIRExpr(irbb->tyenv, stmt->Ist.Put.data) == Ity_I32);

  return translate_put_reg_32(offset, data, irbb);
}
Example #2
0
int translate_expr(Node *expr){
	if (strcmp(expr.operator.type, "+") == 0) || (strcmp(expr.operator.type, "-") == 0) || (strcmp(expr.operator.type, "*") == 0) ||
		(strcmp(expr.operator.type, "/") == 0){

		int left_expr = translate_expr(expr.left_expr);
		int right_expr = translate_expr(expr.right_expr);

		if (left_expr != T_INT) &&  (left_expr != T_REAL){
			// ERROR
		}

		if (right_expr != T_INT) && (right_expr != T_REAL){
			// ERROR
		}

		if (right_expr == T_REAL) || (left_expr == T_REAL){
			// TYPE PROMOTION
			return T_REAL;
		}
	}