Submit Search
オレオレPHPのつくり方
14 likes
6,545 views
Ryusuke Sekiyama
第4回 闇PHP勉強会の資料です
Technology
Read more
1 of 21
Download now
Downloaded 15 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
More Related Content
PDF
8F Emacs seminar 1st
toshi_pp
KEY
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Yoshiyuki MIYAGI
PDF
fanscala1 1 インストールとreplまで
Toshiki Shinozaki
PDF
Rubyで和暦をよみとる
Takashi Ota
PPTX
Shell で制限付き並列処理をしよう
博文 斉藤
PDF
第6回鹿児島node.jsの会資料_内村
Koichi Uchimura
PDF
TextMate
Naoyuki Mitsuboshi
PDF
kvm-clock に時間を尋ねるのは間違っているだろうか
Takaaki Fukai
8F Emacs seminar 1st
toshi_pp
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Yoshiyuki MIYAGI
fanscala1 1 インストールとreplまで
Toshiki Shinozaki
Rubyで和暦をよみとる
Takashi Ota
Shell で制限付き並列処理をしよう
博文 斉藤
第6回鹿児島node.jsの会資料_内村
Koichi Uchimura
TextMate
Naoyuki Mitsuboshi
kvm-clock に時間を尋ねるのは間違っているだろうか
Takaaki Fukai
What's hot
(20)
PDF
MmapScanner
Masahiro Tomita
PDF
HSPでおいしいスープを飲む方法
Hiroaki Murayama
ODP
Acct v3 binary
Yutaka Matsuzawa
PDF
俺とMacとアダルトビデオ[社外版]
Mitsuki Ogasahara
ODP
tnct.Seminar9.03#1
Daichi Onodera
KEY
EmitJSの環境をちょこっと調べた
kyon mm
PDF
setTimeout関数の楽しみ
mtkn
PDF
Haskell超初心者勉強会17
Takashi Kawachi
PDF
fluent-plugin-resque_stat
Makoto Haruyama
PDF
Coffeescriptを初めて使う方へ
Koya Fukuda
PDF
OCamlでJavaScriptが幸せ
Sachirou Inoue
PDF
制約をつけて遊ぼう
Fumihito Yokoyama
PDF
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Takahiro Okumura
PDF
Of tutorials v4.0
Etsuji Nomura
PDF
Play frameworkをエヴァンジェる
ke-m kamekoopa
PDF
Javaで最強のfizz buzz
yy yank
PDF
2017-12-04 Linuxの基本構造とBashでの扱い方
浩平 渡邉
PDF
Of tutorials v1606+
Etsuji Nomura
KEY
Tmux
harutsugu shimoji
PDF
PHP Conference Kansai 2015
Yasuo Harada
MmapScanner
Masahiro Tomita
HSPでおいしいスープを飲む方法
Hiroaki Murayama
Acct v3 binary
Yutaka Matsuzawa
俺とMacとアダルトビデオ[社外版]
Mitsuki Ogasahara
tnct.Seminar9.03#1
Daichi Onodera
EmitJSの環境をちょこっと調べた
kyon mm
setTimeout関数の楽しみ
mtkn
Haskell超初心者勉強会17
Takashi Kawachi
fluent-plugin-resque_stat
Makoto Haruyama
Coffeescriptを初めて使う方へ
Koya Fukuda
OCamlでJavaScriptが幸せ
Sachirou Inoue
制約をつけて遊ぼう
Fumihito Yokoyama
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Takahiro Okumura
Of tutorials v4.0
Etsuji Nomura
Play frameworkをエヴァンジェる
ke-m kamekoopa
Javaで最強のfizz buzz
yy yank
2017-12-04 Linuxの基本構造とBashでの扱い方
浩平 渡邉
Of tutorials v1606+
Etsuji Nomura
Tmux
harutsugu shimoji
PHP Conference Kansai 2015
Yasuo Harada
Ad
Viewers also liked
(20)
PPTX
詳説ぺちぺち
do_aki
PPTX
JavaScript非同期処理 入門
Ishibashi Ryosuke
PDF
Php radomize
do_aki
PDF
セキュアな育毛
Ishibashi Ryosuke
KEY
PHPエクステンションの開発tips
Yoshio Hanawa
PDF
zval をダイエットしてみた
Yoshio Hanawa
PPTX
Php in ruby
do_aki
PDF
超初心者向け!Php勉強法とプログラミングの基礎の基礎
Hiroyuki Sugimoto
PPTX
SQLite2と3のエスケープ関数の違いとその対策
Akishige TAKEKOSHI
PDF
HashTable と HashDos
Yuya Takeyama
PDF
JIT のコードを読んでみた
y-uti
PDF
zend_parse_parametersと64bit環境
Yo Ya
PDF
PHPにおけるI/O多重化とyield
Yahoo!デベロッパーネットワーク
PPTX
PHP基礎勉強会
Yuji Otani
PPTX
php7's ast
do_aki
PPTX
signal の話 或いは Zend Signals とは何か
do_aki
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
PPTX
PHP AST 徹底解説(補遺)
do_aki
PDF
PHP超入門@LL温泉
Sotaro Karasawa
PDF
PHP初心者に贈る、まちがえないPHPの始め方・学び方
Hiroyuki Sugimoto
詳説ぺちぺち
do_aki
JavaScript非同期処理 入門
Ishibashi Ryosuke
Php radomize
do_aki
セキュアな育毛
Ishibashi Ryosuke
PHPエクステンションの開発tips
Yoshio Hanawa
zval をダイエットしてみた
Yoshio Hanawa
Php in ruby
do_aki
超初心者向け!Php勉強法とプログラミングの基礎の基礎
Hiroyuki Sugimoto
SQLite2と3のエスケープ関数の違いとその対策
Akishige TAKEKOSHI
HashTable と HashDos
Yuya Takeyama
JIT のコードを読んでみた
y-uti
zend_parse_parametersと64bit環境
Yo Ya
PHPにおけるI/O多重化とyield
Yahoo!デベロッパーネットワーク
PHP基礎勉強会
Yuji Otani
php7's ast
do_aki
signal の話 或いは Zend Signals とは何か
do_aki
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
PHP AST 徹底解説(補遺)
do_aki
PHP超入門@LL温泉
Sotaro Karasawa
PHP初心者に贈る、まちがえないPHPの始め方・学び方
Hiroyuki Sugimoto
Ad
オレオレPHPのつくり方
1.
オレオレPPHHPPの つくりかた
@@rrsskkyy 22001133..0033..0022 第44回闇PPHHPP勉強会
2.
自己紹介 関山 隆介
((TTwwiitttteerr @@rrsskkyy)) 主な使用言語は PPHHPP,, CC,, OObbjjeeccttiivvee--CC,, JJaavvaaSSccrriipptt PPHHPPの改造が生業趣味です 画像処理とか圧縮アルゴリズムと かに興味あ�ります
3.
アジェンダ PPHHPPスクリプトのコンパイルと実 行についてざっくりと。 実際にPPHHPPを改造したソースコー ドを題材に、PPHHPPを改造して構文 を追加する方法を紹介します。 GGiittHHuubbで本家pphhpp--ssrrccをffoorrkk。 hhttttppss::////ggiitthhuubb..ccoomm//rrsskkyy//pphhpp--ssrrcc
4.
PPHHPPの コンパイルと実行
5.
コンパイルと実行 PPHHPPスクリプトのコンパイルおよ び実行は関数ポインタの呼び出し で行われている。 zzeenndd__ccoommppiillee__ffiillee zzeenndd__ccoommppiillee__ssttrriinngg zzeenndd__eexxeeccuuttee
6.
コンパイル 字句解析してソースコードをトー クンに分解しつつ、構文解析して バイトコードを生成する。 字句解析器:: zzeenndd__llaanngguuaaggee__ssccaannnneerr..cc 構文解析器::
zzeenndd__llaanngguuaaggee__ppaarrsseerr..cc →これらを書き換えれば、新たな リテラルや構文を追加できる!
7.
コンパイル
8.
実行 バイトコードを走査しつつ、命令 ((ooppccooddee))に応じたコールバック 関数を呼び出す。 ooppccooddeeとコールバック関数は zzeenndd__vvmm__ddeeff..hh
で定義されている。 →これを書き換えれば、PPHHPPの挙 動を変えられる。
9.
仮想機械生成
10.
PPHHPPを 改造してみよう
11.
PPHHPPを改造するのに
必要なもの CC言語の知識 ZZeenndd EEnnggiinnee 独特の作法も YYAACCCCの知識 ((なくてもOOKK)) 折れない心 PPHHPP愛
12.
uunnttiill//uunnlleessss構文
13.
uunnttiill//uunnlleessss構文 PPeerrllのまね。 uunnlleessss (($$eexxpprr))
{{ ...... }} iiff文の逆で、条件式が偽のとき ブロックを評価する。 uunnttiill (($$eexxpprr)) {{ ...... }} ddoo {{ ...... }} uunnttiill (($$eexxpprr));;
14.
uunnttiill//uunnlleessssで
やること 字句解析器にトークンを追加 “uunnlleessss”→ TT__UUNNLLEESSSS “uunnttiill”→ TT__UUNNTTIILL 構文解析器に TT__UUNNLLEESSSS//TT__UUNNTTIILLに 対応する処理を追加。 実行部((VVMM))は変更の必要なし。
15.
SSccaallaa風のミックスイン
16.
ミックスイン構文 SSccaallaaの nneeww
AA wwiitthh BB のまね。 $$oobbjj == nneeww AA uussee BB;; $$oobbjj == nneeww AA uussee ((BB,, CC));; 構文解析の都合で、括弧なしで uussee BB,, CC と書けるようにするのは難しかった。 $$oobbjj == nneeww AA uussee $$xx;;
17.
ミックスイン構文で
やること 字句解析器は変更の必要なし。 構文解析器に nneeww AA uussee BB に対応 する処理を追加。 ミックスインに対応するooppccooddee 定義とコールバック関数を追加。
18.
改造PPHHPPのビルドに 必要なツール コンパイラの再生成に
rree22cc と BBiissoonn が、GGiittで取得したソース コードからのビルドには GGNNUU AAuuttoottoooollss が必要です。 hhttttpp::////ddooccss..pphhpp..nneett//mmaannuuaall//jjaa// iinnssttaallll..uunniixx..pphhpp
19.
改造PPHHPPをビルドする $ cd Zend $
php zend_vm_gen.php $ cd .. $ ./buildconf --force $ ./configure $ make
20.
質問タイム
21.
ご静聴 あ�りがとう ございました
Download