Posted: Wed Dec 31, 2008 8:28 pm
Are you trying to make my brain explode or something Adum?
Code: Select all
9}00<!
Code: Select all
9}1[00<p!
Code: Select all
9 (0,0) [9]
} (1,0) []
1 (2,0) [,1]
[ (3,0) []
0 (4,0) [0]
0 (5,0) [0,0]
< (6,0) [9] <-- 9 on the stack
p (7,0) []
! (8,0) []
Code: Select all
[Thread 0] 9 @0,0 []
[Thread 0] } @1,0 [9]
[Thread 0] 1 @2,0 []
[Thread 0] [ @3,0 [1]
[Thread 0] 0 @4,0 []
[Thread 0] 0 @5,0 [1]
[Thread 0] < @6,0 [0,0]
[Thread 0] p @7,0 [0]
[Thread 0] ! @8,0 []
Array ( [result] => 0 [message] => [cycles] => 9 [output] => 9 )
Code: Select all
S0 S1 S2 mem(0,3) mem(0,4) ...
mem(1,0) mem(1,1) mem(1,2) mem(1,3) mem(1,4) ...
...
Code: Select all
7 00<p! --> "7"
Code: Select all
789 00<p 01<p 02<p ! -> "789"
Code: Select all
000>001>002>010>011>012> 98 } 7 00<p 01<p 12<p ! -> "987"
Stack wanders down, but stack x position remains!9 8 0 . . .
0 0 7 . . .
Code: Select all
000>001>002>010>011>012> 98 } 7 00<p 01<p 12<p ppp ! --> "987700"
So we can pop values from the stack we have never pushed on it (here: twice "0").9 8 0 . . .
0 0 7 . . .
Code: Select all
&\1 p
\2 p!
However, both "p" instruction work - no stack underflow error.[Thread 0] & @0,0 []
[Thread 1] \ @1,0 []
[Thread 0] 1 @2,0 []
[Thread 1] \ @1,1 []
[Thread 0] @3,0 [1] <-- here the stack of thread 0 has loaded "1" - ok.
[Thread 1] 2 @2,1 []
[Thread 0] @4,0 [2] <-- now the stack is [2]. The "1" got overwritten by thread 1.
[Thread 1] @3,1 [2]
[Thread 0] p @5,0 [2]
[Thread 1] p @4,1 [2]
[Thread 0] @6,0 []
[Thread 1] ! @5,1 []
Code: Select all
9 8 2 . . .
0 0 7 . . .
Code: Select all
010>011>012>
Code: Select all
9p1[p!
Code: Select all
9p1[p!
Code: Select all
cmd mem SP
9 9 . . (0,1)
p 9 . . (0,0)
1 1 . . (0,1)
[ 1 . . (0,-1)
p 1 . . (0,-2)
Code: Select all
789p1[p!
Code: Select all
29p]p!
Code: Select all
9p1[p!
Code: Select all
9p)p!
Code: Select all
$a=array();
$a[1]=6;
$a[3]=7;
$a[4]=8;
print_r($a); // (a)
array_splice($a,1,1);
print_r($a); // (b)