Криво определяется GOTO

Issue #67 new
xdasm-admin created an issue

Криво определяются переходы, когда их много

<?php

goto BZPmO;
wQ0MI:
echo PHP_EOL;
goto v2Fr7;
ZBeJY:
if (!($i <= 7)) {
  goto C2CDe;
}
goto sVQQO;
a55wk:
goto Lx3Am;
goto TI3pT;
etk7G:
++$i;
goto a55wk;
v2Fr7:
echo $what;
goto jS5vq;
sq0Vr: SBcJp:
goto etk7G;
TeO7s:
echo $beautiful;
goto g4WAN;
yvmtZ:
$i = 0;
goto I1l2g;
jS5vq:
echo $a;
goto TeO7s;
mV7zG:
echo $world;
goto wQ0MI;
edVR2:
$day = 'day ';
goto yvmtZ;
rLQBZ:
$world = 'world ';
goto h1Ktg;
I1l2g: Lx3Am:
goto ZBeJY;
RNR4q:
$beautiful = 'beautiful ';
goto edVR2;
g4WAN:
echo $day;
goto JoxV7;
BZPmO:
$hello = 'hello ';
goto rLQBZ;
fewuv:
$a = 'a ';
goto RNR4q;
sVQQO:
echo $hello;
goto mV7zG;
JoxV7:
echo PHP_EOL;
goto sq0Vr;
FuDMQ:
echo 'that\'s it!' . PHP_EOL;
goto qkgI_;
h1Ktg:
$what = 'what ';
goto fewuv;
TI3pT: C2CDe:
goto FuDMQ;
qkgI_: ?>

Результат:

<?php


/*
0  3   JMP                       ?0        ?34                  ?65151832               ;0  >>34
1  5   FETCH_CONSTANT            #0=       ?0                   "PHP_EOL"               ;16 <<24
2  5   ECHO                      ?0        #0:PHP_EOL           ?0                      ;0
3  6   JMP                       ?0        ?14                  ?65151928               ;0  >>14
4  8   IS_SMALLER_OR_EQUAL       #1=       $i                   7                       ;0  <<29
5  8   BOOL_NOT                  #2=       #1:$i <= 7           ?0                      ;0
6  8   JMPZ                      ?0        #2:!($i <= 7)        ?9                      ;0  >>9
7  9   JMP                       ?0        ?49                  ?65151976               ;0  >>49
8  10  JMP                       ?0        ?9                   ?0                      ;0  >>9
9  11  JMP                       ?0        ?38                  ?65152000               ;0  >>38    <<6,8
10 13  JMP                       ?0        ?29                  ?65152024               ;0  >>29    <<13
11 14  JMP                       ?0        ?49                  ?65152048               ;0  >>49
12 16  PRE_INC                             $i                   ?0                      ;0  <<16
13 17  JMP                       ?0        ?10                  ?10                     ;0  >>10
14 19  ECHO                      ?0        $what                ?0                      ;0  <<3
15 20  JMP                       ?0        ?21                  ?65152096               ;0  >>21
16 22  JMP                       ?0        ?12                  ?12                     ;0  >>12    <<42
17 24  ECHO                      ?0        $beautiful           ?0                      ;0  <<22
18 25  JMP                       ?0        ?32                  ?65152144               ;0  >>32
19 27  ASSIGN                              $i                   0                       ;0  <<26
20 28  JMP                       ?0        ?29                  ?65152192               ;0  >>29
21 30  ECHO                      ?0        $a                   ?0                      ;0  <<15
22 31  JMP                       ?0        ?17                  ?16                     ;0  >>17
23 33  ECHO                      ?0        $world               ?0                      ;0  <<39
24 34  JMP                       ?0        ?1                   ?17                     ;0  >>1
25 36  ASSIGN                              $day                 "day "                  ;0  <<31
26 37  JMP                       ?0        ?19                  ?19                     ;0  >>19
27 39  ASSIGN                              $world               "world "                ;0  <<35
28 40  JMP                       ?0        ?47                  ?65152336               ;0  >>47
29 42  JMP                       ?0        ?4                   ?22                     ;0  >>4 <<10,20
30 44  ASSIGN                              $beautiful           "beautiful "            ;0  <<37
31 45  JMP                       ?0        ?25                  ?24                     ;0  >>25
32 47  ECHO                      ?0        $day                 ?0                      ;0  <<18
33 48  JMP                       ?0        ?40                  ?65152432               ;0  >>40
34 50  ASSIGN                              $hello               "hello "                ;0  <<0
35 51  JMP                       ?0        ?27                  ?27                     ;0  >>27
36 53  ASSIGN                              $a                   "a "                    ;0  <<48
37 54  JMP                       ?0        ?30                  ?29                     ;0  >>30
38 56  ECHO                      ?0        $hello               ?0                      ;0  <<9
39 57  JMP                       ?0        ?23                  ?30                     ;0  >>23
40 59  FETCH_CONSTANT            #10=      ?0                   "PHP_EOL"               ;16 <<33
41 59  ECHO                      ?0        #10:PHP_EOL          ?0                      ;0
42 60  JMP                       ?0        ?16                  ?34                     ;0  >>16
43 62  FETCH_CONSTANT            #11=      ?0                   "PHP_EOL"               ;16 <<49
44 62  CONCAT                    #12=      "that's it!"         #11:PHP_EOL             ;0
45 62  ECHO                      ?0        #12:"that's it!" . PHP_EOL ?0                    ;0
46 63  JMP                       ?0        ?50                  ?65152768               ;0  >>50
47 65  ASSIGN                              $what                "what "                 ;0  <<28
48 66  JMP                       ?0        ?36                  ?41                     ;0  >>36
49 68  JMP                       ?0        ?43                  ?42                     ;0  >>43    <<7,11
*/
echo PHP_EOL;
++$i;
echo $what;
echo $beautiful;
$i = 0;
echo $a;
echo $world;
$day = "day ";
$world = "world ";
$beautiful = "beautiful ";
echo $day;
$hello = "hello ";
$a = "a ";
echo $hello;
echo PHP_EOL;
echo "that's it!" . PHP_EOL;
$what = "what ";

?>

Comments (1)

  1. Log in to comment