 abc.b + abc.c;
	break;
    case RB_SUB:
	abc = getabc(regs, mem, i);
	rabbitw res = abc.b - abc.c;
	*abc.dst = res;
	if (res == 0) {
	    /* Set zero flag. */
	    regs[RB_FLAGS] |= 0x2U;
	}
	break;
    case RB_MUL:
	abc = getabc(regs, mem, i);
	*abc.dst = abc.b * abc.c;
	break;
    case RB_DIV:
	abc = getabc(regs, mem, i);
	if (abc.c == 0) {
	    free(mem);
	    return RB_ILLEGAL;
	}

	*abc.dst = abc.b / abc.c;
	break;
    case RB_SHR:
	abc = getabc(regs, mem, i);
	*abc.dst = abc.b &gt;&gt; abc.c;
	break;