/**--------------------------------------------------------------------------**\
Remark : The Zeex's PAWN Compiler is required to use the p-code CALL.
\**--------------------------------------------------------------------------**/
#if __Pawn != 0x030A
#error Download the Zeex's PAWN Compiler, it is required to use the p-code CALL.
// '
#endif
#include "a_samp"
main()
{
new
value1 = 5,
value2 = 10;
print(" ");
print("Value");
#emit PUSH.S value2 // On push la valeur de value2 se trouvant dans le stack
#emit PUSH.S value1 // On push la valeur de value1 se trouvant dans le stack
#emit PUSH.C 8 // On push le nombre de bytes (4 bytes par argument push)
#emit CALL func // On appelle la fonction "func"
print(" ");
print("Local address");
#emit PUSH.C value2 // On push l'adresse locale de value2
#emit PUSH.C value1 // On push l'adresse locale de value1
#emit PUSH.C 8 // On push le nombre de bytes (4 bytes par argument push)
#emit CALL func // On appelle la fonction "func"
print(" ");
print("Relative address");
#emit PUSH.ADR value2 // On push l'adresse relative de value2
#emit PUSH.ADR value1 // On push l'adresse relative de value2
#emit PUSH.C 8 // On push le nombre de bytes (4 bytes par argument push)
#emit CALL func // On appelle la fonction "func"
print(" ");
print("Global address");
#emit LCTRL 1 // On charge dans le registre primaire le DATA
#emit ADDR.alt value2 // On charge dans le registre alterné, l'adresse relative de value2
#emit ADD // On additionne le DATA et l'adresse relative (pri + alt) | pri += alt
#emit PUSH.pri // On push la valeur se trouvant dans le registre primaire
#emit LCTRL 1 // On charge dans le registre primaire le DATA
#emit ADDR.alt value1 // On charge dans le registre alterné, l'adresse relative de value1
#emit ADD // On additionne le DATA et l'adresse relative (pri + alt) | pri += alt
#emit PUSH.pri // On push la valeur se trouvant dans le registre primaire
#emit PUSH.C 8 // On push le nombre de bytes (4 bytes par argument push)
#emit CALL func // On appelle la fonction "func"
}
func(a, b)
{
printf("a = %d | 0x%x", a, a);
printf("b = %d | 0x%x", b, b);
return 0;
}
Comments
0 B
|👍
/👎