12.06.2011, 21:53
I'm not sure is this actually useful but I was bored lol
pawn Код:
stock PrintStack()
{
new stp, stk;
new row[4];
new rowidx = 0;
new stackitem;
// Get the registers
#emit lctrl 3
#emit stor.s.pri stp
#emit lctrl 4
#emit stor.s.pri stk
// Walk through the stack print 4 elements in each row
for (new i = stk; i < stp; i += 4) {
#emit lref.s.pri i
#emit stor.s.pri stackitem
row[rowidx++] = stackitem;
if ((i / 4) % 4 == 0) {
printf("[%04x]: %04x%04x %04x%04x %04x%04x %04x%04x", i - stk,
(row[0] & 0xFFFF0000) >> 16, row[0] & 0x0000FFFF,
(row[1] & 0xFFFF0000) >> 16, row[1] & 0x0000FFFF,
(row[2] & 0xFFFF0000) >> 16, row[2] & 0x0000FFFF,
(row[3] & 0xFFFF0000) >> 16, row[3] & 0x0000FFFF
);
rowidx = 0;
}
}
return (stp - stk) / 4; // Number of items (cells) printed
}