Понимание кода операции PHP в операторе if

Я пытаюсь понять код операции для простого кода.

Код:

Код операции для приведенного выше кода:

php -dvld.active=1 test.php
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = 3, Position 2 = 4
Branch analysis from position: 3
Jump found. Position 1 = 5, Position 2 = 7
Branch analysis from position: 5
Jump found. Position 1 = 7
Branch analysis from position: 7
Return found
Branch analysis from position: 7
Branch analysis from position: 4
filename:       /home/starlays/learning/test.php
function name:  (null)
number of ops:  8
compiled vars:  !0 = $a, !1 = $b
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   3     0  >   ASSIGN                                                   !0, true
   5     1      ASSIGN                                                   !1, false
   7     2    > JMPZ_EX                                          ~2      !0, ->4
         3  >   BOOL                                             ~2      !1
         4  > > JMPZ                                                     ~2, ->7
   8     5  >   ECHO                                                     'done'
   9     6    > JMP                                                      ->7
  10     7  > > RETURN                                                   1

branch: #  0; line:     3-    7; sop:     0; eop:     2; out1:   3; out2:   4
branch: #  3; line:     7-    7; sop:     3; eop:     3; out1:   4
branch: #  4; line:     7-    7; sop:     4; eop:     4; out1:   5; out2:   7
branch: #  5; line:     8-    9; sop:     5; eop:     6; out1:   7
branch: #  7; line:    10-   10; sop:     7; eop:     7
path #1: 0, 3, 4, 5, 7, 
path #2: 0, 3, 4, 7, 
path #3: 0, 4, 5, 7, 
path #4: 0, 4, 7, 

Я пытаюсь понять, что происходит в строке 7, как выполняется оценка?Сколько значений он вводит в выражение if для оценки? Он вводит 3 значения или вводит 2 значения: значение $a и значение $b, а затем вычисляется выражение из скобок if?

Я прочитал руководство для JMPZ _EX , я понял, что происходит в коде операции до шага 2, после чего это немного перепутано, и мне очень трудно понять, что это точные шаги, которые делает php.

Еще одна вещь, которую мне нужно понять, это то, что представляют собой все ветки в коде операции, какая из всех этих ветвей будет использоваться в конце?

8
задан Starlays 23 July 2012 в 08:16
поделиться