Tôi đang cố gắng hiểu mã op cho một mã đơn giản.Hiểu mã op của PHP trong câu lệnh if
Mã này là:
<?php
$a = TRUE;
$b = FALSE;
if($a && $b) {
echo 'done';
}
Mã op cho mã trên là:
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,
Tôi đang cố gắng để hiểu những gì đang xảy ra trên dòng 7, làm thế nào là đánh giá thực hiện? Bao nhiêu giá trị nó nhập vào trong biểu thức của nếu để đánh giá? Nó nhập vào 3 giá trị, hoặc nó nhập vào 2 giá trị giá trị của $ a và giá trị của $ b và biểu thức từ dấu ngoặc đơn nếu được đánh giá sau đó?
Tôi đã đọc hướng dẫn cho JMPZ_EX, tôi đã hiểu những gì đang xảy ra trong mã op cho đến bước 2 sau đó là một chút hỗn hợp và rất khó để tôi hiểu các bước chính xác mà php là gì đang làm.
Một điều khác mà tôi cần phải hiểu là tất cả các nhánh trong mã op là gì, tất cả các nhánh nào sẽ được sử dụng ở cuối?
'&&' là toán tử mạch ngắn. –
@KarolyHorvath mà tôi biết, tôi cần phải hiểu các bước mà php đang làm từ mã op ở trên. – Starlays
Tôi chỉ đang nói bạn đã biết cách xử lý, vì vậy ... –