if (ind.reg != null && ind.sreg != null) {
if (ind.segment){ ret |= SEG_ARG << DISP * i; } else if (ind.reg != null && ind.sreg != null) {
    private int getAddressingMode(int maxArgs) {        int ret = N_ADDR;        if (maxArgs > 3) {            throw new Error("Invalid number of arguments: " + maxArgs);        }        for (int i = 0; i < maxArgs; i++) {            try {                if (operands == null) break;                Object o = operands.get(i);                if (o == null) break;                if (o instanceof Integer) {                    ret |= CON_ARG << DISP * i;                } else if (o instanceof Register) {                    ret |= REG_ARG << DISP * i;                } else if (o instanceof Address) {                    Address ind = (Address) o;                    if (ind.reg != null && ind.sreg != null) {                        ret |= SCL_ARG << DISP * i;                    } else if (ind.reg != null && ind.sreg == null) {                        ret |= REL_ARG << DISP * i;                    } else if (ind.reg == null && ind.sreg != null) {                        ret |= ZSC_ARG << DISP * i;                    } else if (ind.reg == null && ind.sreg == null) {                        ret |= ABS_ARG << DISP * i;                    } else {                        throw new IllegalArgumentException("Unknown indirect: " + ind);                    }                } else {                    throw new IllegalArgumentException("Unknown operand: " + o + " " + o.getClass().getName());                }                args[i] = o;            } catch (IndexOutOfBoundsException x) {                break;            }        }        return ret;    }