Changeset 758
- Timestamp:
- 04/17/2011 10:23:57 AM (2 years ago)
- Location:
- trunk
- Files:
-
- 2 modified
-
Decompiler.class.php (modified) (5 diffs)
-
decompilesample.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Decompiler.class.php
r757 r758 650 650 $op['line'] = $i; 651 651 switch ($op['opcode']) { 652 case XC_CONT: 653 case XC_BRK: 654 $op['jmpouts'] = array(); 655 break; 656 652 657 case XC_GOTO: 653 658 case XC_JMP: … … 801 806 return; 802 807 } 803 if ( !empty($op['jmpouts']) && isset($op['isjmp'])) {808 if (isset($op['jmpouts']) && isset($op['isjmp'])) { 804 809 if (isset($op['cond'])) { 805 810 echo "{$indent}check (" . str($op["cond"]) . ") {\n"; 806 811 echo INDENT; 807 812 } 808 echo $indent; 809 echo xcache_get_opcode($op['opcode']), ' line', $op['jmpouts'][0]; 810 if (isset($op['jmpouts'][1])) { 811 echo ', line', $op['jmpouts'][1]; 812 } 813 echo ";"; 814 // echo ' // <- line', $op['line']; 815 echo "\n"; 813 switch ($op['opcode']) { 814 case XC_CONT: 815 case XC_BRK: 816 break; 817 818 case XC_GOTO: 819 echo $indent, 'goto', ' line', $op['jmpouts'][0], ';', "\n"; 820 break; 821 822 default: 823 echo $indent; 824 echo xcache_get_opcode($op['opcode']), ' line', $op['jmpouts'][0]; 825 if (isset($op['jmpouts'][1])) { 826 echo ', line', $op['jmpouts'][1]; 827 } 828 echo ";"; 829 // echo ' // <- line', $op['line']; 830 echo "\n"; 831 } 816 832 if (isset($op['cond'])) echo "$indent}\n"; 817 833 } … … 1521 1537 break; 1522 1538 // }}} 1539 case XC_CONT: 1540 case XC_BRK: 1541 $op['cond'] = null; 1542 $op['isjmp'] = true; 1543 $resvar = $opc == XC_CONT ? 'continue' : 'break'; 1544 $count = str($this->getOpVal($op2, $EX)); 1545 if ($count != '1') { 1546 $resvar .= ' ' . $count; 1547 } 1548 break; 1523 1549 case XC_GOTO: 1524 1550 case XC_JMP: // {{{ … … 1531 1557 $caseValue = $this->getOpVal($op2, $EX); 1532 1558 $resvar = str($switchValue) . ' == ' . str($caseValue); 1533 break;1534 case XC_BRK:1535 1559 break; 1536 1560 case XC_RECV_INIT: … … 1578 1602 $EX['silence'] --; 1579 1603 $lastresvar = '@' . str($lastresvar, $EX); 1580 break;1581 // }}}1582 case XC_CONT: // {{{1583 1604 break; 1584 1605 // }}} -
trunk/decompilesample.php
r753 r758 186 186 $a = $b ^ $c; 187 187 $a = ~$b; 188 $a = -$b; 189 $a = +$b; 188 190 $a = $b >> $c; 189 191 $a = $b >> $c; … … 249 251 250 252 foreach ($array as $key => $value) { 251 echo $key . ' = ' . $value . "\n"; 252 continue; 253 foreach ($array as $key => $value) { 254 echo $key . ' = ' . $value . "\n"; 255 break 2; 256 continue; 257 } 253 258 } 254 259 … … 279 284 echo __LINE__; 280 285 281 //* >= PHP 5.3286 //* 282 287 echo 'PHP 5.3+ code testing'; 283 288 const CONST_VALUE = 1; … … 309 314 $greet('PHP'); 310 315 $total = 0; 316 $tax = 1; 311 317 $callback = function ($quantity, $product) use ($tax, &$total) { 318 static $static = array(1); 319 $tax = 'tax'; 312 320 $pricePerItem = constant('PRICE_' . strtoupper($product)); 313 321 $total += $pricePerItem * $quantity * ($tax + 1);

