2006/12/14

俺様用zend opメモ

{ 65, "ZEND_SEND_VAL" },
値渡し。znodeの中の値をスタックに載せる。
{ 66, "ZEND_SEND_VAR" },
参照渡し。znodeの中に書かれているアドレスのデータをスタックに載せる。

{ 80, "ZEND_FETCH_R" },
{ 83, "ZEND_FETCH_W" },
{ 86, "ZEND_FETCH_RW" },
シンボルを解決してデータをとってくる。R-read W-write。

{ 81, "ZEND_FETCH_DIM_R" },
{ 84, "ZEND_FETCH_DIM_W" },
{ 87, "ZEND_FETCH_DIM_RW" },
配列の要素を取る。

{ 82, "ZEND_FETCH_OBJ_R" },
{ 85, "ZEND_FETCH_OBJ_W" },
{ 88, "ZEND_FETCH_OBJ_RW" },
オブジェクトのメンバを取る。

{ 102, "ZEND_EXT_FCALL_BEGIN" },
{ 103, "ZEND_EXT_FCALL_END" },
zend extensionに対してコールバックを起こす。それぞれ関数が終わるタイミングと始まるタイミング。

関数呼び出しの際の引数は、普通のintの引数とかはSEND_VALで値渡し(zvalに入りきるから?)して、array/objectなどはZEND_FETCH_*で値をとって、SEND_VARでスタックに載せてる。

0 件のコメント: