reg: ADD (reg, CONST_I4) "MB_USE_OPT1(0)" {
if (tree->reg1 != tree->left->reg1)
x86_mov_reg_reg (s->code, tree->reg1, tree->left->reg1, 4);
- x86_alu_reg_imm (s->code, X86_ADD, tree->reg1, tree->right->data.i);
+
+ if (tree->right->data.i == 1)
+ x86_inc_reg (s->code, tree->reg1);
+ else
+ x86_alu_reg_imm (s->code, X86_ADD, tree->reg1, tree->right->data.i);
}
reg: ADD (reg, reg) {
reg: SUB (reg, CONST_I4) "MB_USE_OPT1(0)" {
if (tree->reg1 != tree->left->reg1)
x86_mov_reg_reg (s->code, tree->reg1, tree->left->reg1, 4);
- x86_alu_reg_imm (s->code, X86_SUB, tree->reg1, tree->right->data.i);
+
+ if (tree->right->data.i == 1)
+ x86_dec_reg (s->code, tree->reg1);
+ else
+ x86_alu_reg_imm (s->code, X86_SUB, tree->reg1, tree->right->data.i);
}
reg: SUB (reg, reg) {
ves_icall_System_DateTime_GetNow ()
{
struct timeval tv;
+ gint64 res;
// fixme: it seems that .Net has another base time than Unix??
if (gettimeofday (&tv, NULL) == 0) {
- return (gint64)tv.tv_sec * 1000000000 + tv.tv_usec*10;
+ res = ((gint64)tv.tv_sec * 1000000 + tv.tv_usec)*10;
+ return res;
}