} else if (o1 instanceof Address) { Address ind = (Address) o1; if (ind.reg != null && ind.sreg != null) { throw new IllegalArgumentException("Scaled is not supported for call "); } else if (ind.reg != null && ind.sreg == null) { stream.writeCALL(getRegister(ind.getImg()), ind.disp); } else if (ind.reg == null && ind.sreg != null) { throw new IllegalArgumentException("Simple scaled is not supported for call "); } else if (ind.reg == null && ind.sreg == null) { throw new IllegalArgumentException("Absolute is not supported for call "); } else { throw new IllegalArgumentException("Unknown indirect: " + ind); }
    private final void emmitCALL() {        Object o1 = operands.get(0);        if (o1 instanceof Register) {            stream.writeCALL(getRegister(((Register) o1).name));        } else if (o1 instanceof Identifier) {            String id = ((Identifier) o1).name;            Label lab = (Label) labels.get(id);            lab = (lab == null) ? new Label(id) : lab;            stream.writeCALL(lab);        } else {            throw new IllegalArgumentException("Unknown operand: " + o1);        }    }