private String offset (VarLocation v){     
        if (v.getDesc() instanceof DescriptorSimple){
            DescriptorSimple d = (DescriptorSimple)v.getDesc();
            if (isGlobal(d)){
                return d.getNombre();
            }
            else{
                return d.getOffset()+"(%ebp)";
            }           
        }
        if (v.getDesc() instanceof DescriptorArreglo){
            DescriptorArreglo d = (DescriptorArreglo)v.getDesc();
            Expression index = v.getIndice();            
            if (index instanceof IntLiteral){
                IntLiteral i = (IntLiteral)index;
                assembly.add("  movl "  + i.getValue() + ", %edx");
            }
            else{
                VarLocation i = (VarLocation)index;
                if (isGlobal(i.getDesc())){
                    assembly.add("  movl "  + i.getDesc().getNombre()+", %edx");
                }
                else{
                    assembly.add("  movl "  + i.getDesc().getOffset() + "(%ebp), %edx");
                }    
            }
            if (isGlobal(d))
                return d.getNombre()+"(,%edx,4)";
            else
                return d.getOffset()+"(%ebp,%edx,4)";     
        }
        return "";
    }