Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "a_samp"
- main()
- {
- new
- a[3] = {111, 222, 333},
- b[5][5] =
- {
- {91, 92, 93, 94, 95},
- {96, 97, 98, 99, 910},
- {911, 912, 913, 914, 915},
- {916, 917, 918, 919, 920},
- {921, 922, 923, 924, 925}
- },
- c[3][3][3] =
- {
- {
- {1, 2, 3},
- {4, 5, 6},
- {7, 8, 9}
- },
- {
- {11, 22, 33},
- {44, 55, 66},
- {77, 88, 99}
- },
- {
- {111, 222, 333},
- {444, 555, 666},
- {777, 888, 999}
- }
- },
- v = 0;
- // a[1] -> 222
- #emit ADDR.pri a // a
- #emit ADD.C 4 // a[1]
- #emit LOAD.I
- #emit STOR.S.pri v
- printf("%d", v); // a[1] = 222
- // b[1][1] -> 97
- #emit ADDR.pri b // b
- #emit ADD.C 4 // b[1]
- #emit MOVE.alt
- #emit LOAD.I
- #emit ADD
- #emit ADD.C 4 // b[1][1]
- #emit LOAD.I
- #emit STOR.S.pri v
- printf("%d", v); // b[1][1] = 97
- // c[1][1][1] -> 55
- #emit ADDR.pri c // c
- #emit ADD.C 4
- #emit MOVE.alt
- #emit LOAD.I
- #emit ADD // c[1]
- #emit ADD.C 4
- #emit MOVE.alt
- #emit LOAD.I
- #emit ADD // c[1][1]
- #emit ADD.C 4 // c[1][1][1]
- #emit LOAD.I
- #emit STOR.S.pri v
- printf("%d", v); // c[1][1][1] = 55
- print("---------------");
- printf("%d", func(a, 1)); // a[1] = 222
- printf("%d", func(b, 1, 1)); // b[1][1] = 97
- printf("%d", func(c, 1, 1, 1)); // c[1][1][1] = 55
- }
- func(...)
- {
- new
- args = 0;
- #emit LOAD.S.pri 8 // get args (in bytes)
- #emit STOR.S.pri args
- if(args == 8) // 2 args
- {
- #emit LOAD.S.pri 12
- #emit LREF.S.alt 16
- #emit SHL.C.alt 2
- #emit ADD
- #emit LOAD.I
- #emit STACK 4
- #emit RETN
- }
- else if(args == 12) // 3 args
- {
- #emit LOAD.S.pri 12
- #emit LREF.S.alt 16
- #emit SHL.C.alt 2
- #emit ADD
- #emit MOVE.alt
- #emit LOAD.I
- #emit ADD
- #emit LREF.S.alt 20
- #emit SHL.C.alt 2
- #emit ADD
- #emit MOVE.alt
- #emit LOAD.I
- #emit STACK 4
- #emit RETN
- }
- else if(args == 16) // 4 args
- {
- #emit LOAD.S.pri 12
- #emit LREF.S.alt 16
- #emit SHL.C.alt 2
- #emit ADD
- #emit MOVE.alt
- #emit LOAD.I
- #emit ADD
- #emit LREF.S.alt 20
- #emit SHL.C.alt 2
- #emit ADD
- #emit MOVE.alt
- #emit LOAD.I
- #emit ADD
- #emit LREF.S.alt 24
- #emit SHL.C.alt 2
- #emit ADD
- #emit LOAD.I
- #emit STACK 4
- #emit RETN
- }
- return 0;
- }
Advertisement