C_far icon

Numarg

C_far | PRO | 07/01/16 09:59:39 AM UTC | 0 ⭐ | 341 👁️ | Never ⏰ | []
Pawn |

1.31 KB

|

None

|

0 👍

/

0 👎

#include "a_samp"
 
main()
{              
    printf("%d", func(1, 2, 3));
    printf("%d", func2(1, 2, 3));
    printf("%d", func3(1, 2, 3));
}
 
func(...)
{
    #emit LCTRL 5 // Le registre primaire stocke le frm | pri = frm
    #emit ADD.C 8 // On y ajoute 8 (2*sizeof(cell)) | pri += 8
    #emit LOAD.I // On récupère la valeur à l'adresse dat+pri (pri = frm+8) dans le registre primaire | pri = *(dat + frm + 8)
    #emit SHR.C.pri 2 // pri >>= 2 (pri / 4)
    #emit RETN // On retourne le résultat se trouvant dans le registre primaire
   
    return 0; // On évite le warning 209
}
 
func2(...)
{
    #emit LOAD.S.pri 8 // Le registre primaire stocke la valeur se trouvant à l'addresse dat+frm+8 | pri = *(dat + frm + 8)
    #emit SHR.C.pri 2 // pri >>= 2 (pri / 4)
    #emit RETN // On retourne le résultat se trouvant dans le registre primaire
   
    return 0; // On évite le warning 209
}
 
func3(...)
{
    return numargs_();
}
 
numargs_()
{
    #emit LOAD.S.pri 0 // Le registre primaire stocke la valeur se trouvant à l'adresse dat+frm | pri = *(dat + frm)
    #emit ADD.C 8 // pri += 8
    #emit LOAD.I // On récupère la valeur à l'adresse stockée par le registre primaire | pri = *(dat + pri)
    #emit SHR.C.pri 2 // pri >>= 2 (pri / 4)
    #emit RETN // On retourne le résultat se trouvant dans le registre primaire
    
    return 0;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎