Misiur

Untitled

Mar 10th, 2013
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 0.60 KB | None | 0 0
  1. #define @{%0:%1:%2} GetArrayIndexByKey(_:%0,_:%1,%2, sizeof %0)
  2.  
  3. stock GetArrayIndexByKey(...) {
  4.     if(4 != numargs()) return -1;
  5.     new tmp, arrayAddr, compare = getarg(2, 0), offset = getarg(1, 0) * 4;
  6.     #emit CONST.alt     12
  7.     #emit LCTRL         5
  8.     #emit ADD
  9.     #emit LOAD.I
  10.     #emit STOR.S.pri    arrayAddr
  11.     for(new i = 0; i != getarg(3, 0) * 4; i += 4) {    
  12.         #emit LOAD.S.pri    arrayAddr
  13.         #emit LOAD.S.alt    i
  14.         #emit ADD
  15.         #emit MOVE.alt
  16.         #emit LOAD.I
  17.         #emit ADD      
  18.         #emit LOAD.S.alt    offset
  19.         #emit ADD
  20.         #emit LOAD.I
  21.         #emit STOR.S.pri    tmp    
  22.        
  23.         if(compare == tmp) return i / 4;
  24.     }
  25.    
  26.     return -1;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment