#! /usr/bin/php 5, 'op1' => 20, 'op2' => 20); foreach ($op_array as $line => $op) { echo $indent; echo sprintf("%3d ", $op['lineno']); echo sprintf("%3x ", $line); $name = xcache_get_opcode($op['opcode']); if (substr($name, 0, 5) == 'ZEND_') { $name = substr($name, 5); } echo str_pad($name, 25); foreach ($types as $t => $len) { echo str_pad(isset($op[$t]) ? get_op($op[$t]) : "", $len); } printf("%5s", isset($op['extended_value']) ? $op['extended_value'] : ""); echo "\n"; } } function dump_function($name, $func, $indent = '') { if (isset($func['op_array'])) { $op_array = $func['op_array']; unset($func['op_array']); } else { $op_array = null; } var_dump($func); echo $indent, 'function ', $name, "\n"; if (isset($op_array)) { dump_opcodes($op_array['opcodes'], " " . $indent); } } function dump_class($name, $class, $indent = '') { if (isset($class['function_table'])) { $funcs = $class['function_table']; unset($class['function_table']); } else { $funcs = null; } echo $indent, 'class ', $name, "\n"; if (isset($funcs)) { foreach ($funcs as $name => $func) { dump_function($name, $func, " " . $indent); } } } $pk = xcache_dasm_file($argv[1]); $op_array = $funcs = $classes = null; if (isset($pk['op_array'])) { $op_array = $pk['op_array']; unset($pk['op_array']); } if (isset($pk['function_table'])) { $funcs = $pk['function_table']; unset($pk['function_table']); } if (isset($pk['class_table'])) { $classes = $pk['class_table']; unset($pk['class_table']); } var_dump($pk); if (isset($op_array)) { dump_opcodes($op_array['opcodes']); } if (isset($funcs)) { foreach ($funcs as $name => $func) { dump_function($name, $func); } } if (isset($classes)) { foreach ($classes as $name => $class) { dump_class($name, $class); } }