#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
0 B
|👍
/👎