Advertisement
Guest User

ptr.inc

a guest
Mar 19th, 2012
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 0.75 KB | None | 0 0
  1. #if defined _ptr_included
  2.     #endinput
  3. #endif
  4. #define _ptr_included
  5.  
  6. stock Pointer:GetPointer(...)
  7. {
  8.     #emit LOAD.S.pri 0x0C
  9.     #emit RETN
  10.    
  11.     return Pointer:0;
  12. }
  13.  
  14. stock SetData(Pointer:ptr, value, idx = 0)
  15. {
  16.     #emit LOAD.S.pri idx // PRI = idx
  17.     #emit SMUL.C 0x04 // PRI = 4 * idx
  18.     #emit LOAD.S.alt ptr // ALT = ptr
  19.     #emit ADD // PRI = ptr + 4 * idx
  20.     #emit LOAD.S.alt value // ALT = value
  21.     #emit XCHG // ALT = ptr + 4 * idx, PRI = value
  22.     #emit STOR.I // [ptr + 4 * idx] = value ([ALT] = PRI)
  23. }
  24.  
  25. stock GetData(Pointer:ptr, idx = 0)
  26. {
  27.     #emit LOAD.S.pri idx // PRI = idx
  28.     #emit SMUL.C 0x04 // PRI = 4 * idx
  29.     #emit LOAD.S.alt ptr // ALT = ptr
  30.     #emit ADD // PRI = ptr + 4 * idx
  31.     #emit LOAD.I // PRI = [PRI] = [ptr + 4 * idx]
  32.     #emit RETN
  33.    
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement