SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] #emitIDXADDR

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11378
    Moedas : 1031977
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] #emitIDXADDR Empty [Tutorial] #emitIDXADDR

    Mensagem por Weslley_Script Sáb 13 maio 2023 - 8:02

    Vou começar a fazer uma listinha de tutoriais, com alguns truques que estou aprendendo em #emit. Pra quem nгo sabe o que й isto, favor, veja os seguintes links:





    Como podem ver, ambos tutoriais estão incompletos. Porque é simplesmente díficil demais, ensinar #emit, tem muitos opcodes (que nem eu mesmo consegui aprender) e por este motivo é necessário que se façam muitos tutoriais. Pois bem, antes de tudo. Você deve saber o básico de #emit para pelo menos entender esse tutorial.


    Nesse pequeno tutorial, vou explicar como é o uso do opcode IDXADDR. Que nгo foi bem explicado em alguns tutoriais. Vamos lá!



    basicamente, quando você carrega um array para memуria em #emit
    Código do peão:
    #emit LOAD.S.alt array

    Você não pode manipular os valores internos dela, por isso existe o IDXADDR, que basicamente é a abreviatura de INDEX ADDRESS, pois você está pegando o valor address INDEX de uma array através do endereço dela. Entenderam? Não?

    Vou explicar melhor:

    Quando você tem
    Código PHP:

    Código:
    new array [] = {1,2,3,4,5}; 

    Em #emit, é muito complicado pegar um ъnico valor desta array (seja 1,2,3,4 ou 5) por este motivo, usando IDXADDR você pode combinar o armazenamento ALT (alternativo) com o PRI (primário) e pegar alguns desses valores de dentro da array, nesse caso, pegará o endereço deles, simplesmente fazendo

    Código do peão:

    Código:
    [size=14][size=13]nova matriz [ ]  =  { 1 , 2 , 3 , 4 , 5 } ;
       
        novo idx =  2 ; // vou pegar o endereço do elemento 2 da array, no caso da parte 3
       
        new arrayvalue; // célula para armazenamento do valor
       
        // carregar array para o registro alternativo
        #emit LOAD.S.alt array
       
        // carregar o valor de idx para o registro primário
        #emit LOAD.S.pri idx
       
        // IDXADDR, neste caso iria armazenar sem registro prнmario: array[iter]
        #emit IDXADDR
       
        // para demonstração, salvarei o valor de array[idx] em arrayvalue
        #emit STOR.S.pri arrayvalue
       
        // mágica! arrayvalue agora tem o valor address da array, que era array[idx] addr
        printf ( "%d" , arrayvalue ) ;[/size][/size]


    [center][/center]


    EXEMPLO:

    Serve para pegar valores na array (уbvio), veja o exemplo:
    Código do peão:

    Código:
    nova matriz [ ]  =  { 48481 , 184 } ;

    printf ( "%d" , getidx ( array, 1 ) ) ; // 184

    stock getidx ( arr [ ] , idx )  {

        // carrega no registro primário o idx
        #emit LOAD.S.pri idx
       
        // carrega um array no registro secundário
        #emit LOAD.S.alt arr
       
        // pega o endereço de arr[idx]
        #emit IDXADDR
       
        // armazena o valor do endereço em idx
        #emit STOR.S.pri idx
       
        // carrega um array
        #emit LOAD.I
       
        // armazena o valor de arr[idx] em idx agora
        #emit STOR.S.pri idx
       
        // retorna o valor encontrado
        #emit RETN
       
        // faz o compilador feliz
        return  0 ;
    }


    Viram? É simples, mas pode-se usar para muitas coisas. Logo que eu puder, estarei fazendo outros tutoriais referentes a outros opcodes não mostrados no tutorial do rjj.


    Qualquer erro no tutorial avisem.


    Abraços[Tutorial] #emitIDXADDR Mrgreen

    Creditos IPSBruno



    [Tutorial] #emitIDXADDR D07Xwqb
    [Tutorial] #emitIDXADDR Yjab9HN

      Data/hora atual: Qua 8 maio 2024 - 13:45