मैं एक साधारण कोड के लिए ओप कोड को समझने की कोशिश कर रहा हूं।एक कथन में PHP ओपी कोड को समझना
कोड है:
<?php
$a = TRUE;
$b = FALSE;
if($a && $b) {
echo 'done';
}
ऊपर कोड के लिए सेशन कोड है:
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 पर हो रहा है कोशिश कर रहा हूँ, कैसे मूल्यांकन किया जाता है? मूल्यांकन के लिए अभिव्यक्ति में कितने मूल्य दर्ज होते हैं? यह 3 मानों में प्रवेश करता है, या यह 2 मानों को $ ए के मूल्य और $ बी के मूल्य में प्रवेश करता है और बाद में मूल्यांकन किए जाने वाले कोष्ठक से अभिव्यक्ति का मूल्यांकन किया जाता है?
मैंने JMPZ_EX के लिए मैनुअल पढ़ा है, मुझे पता है कि ओप कोड में क्या हो रहा है, इसके बाद चरण 2 तक थोड़ा सा मिश्रित हो गया है और यह समझना मेरे लिए बहुत मुश्किल है कि PHP क्या है करते हुए।
एक और चीज जिसे मुझे समझने की आवश्यकता है, ओप कोड में सभी शाखाएं क्या हैं, जो कि सभी शाखाओं का अंत में उपयोग किया जाएगा?
'&&' एक शॉर्ट-सर्किटिंग ऑपरेटर है। –
@ karolyHorvath जो मुझे पता है, मुझे उन चरणों को समझने की आवश्यकता है जो उपरोक्त ओप कोड से php कर रहे हैं। – Starlays
मैं बस इतना कह रहा हूं कि आपको पहले से ही पता होना चाहिए कि यह कैसे व्यवहार करना चाहिए, इसलिए ... –