Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
オレオレPHPのつくり方
Report
Ryusuke Sekiyama
Follow
Engineer at Zynga Japan
Mar. 11, 2013
•
0 likes
14 likes
×
Be the first to like this
Show More
•
6,163 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
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
1
of
21
Top clipped slide
オレオレPHPのつくり方
Mar. 11, 2013
•
0 likes
14 likes
×
Be the first to like this
Show More
•
6,163 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
第4回 闇PHP勉強会の資料です
Ryusuke Sekiyama
Follow
Engineer at Zynga Japan
Advertisement
Advertisement
Advertisement
Recommended
8F Emacs seminar 1st
toshi_pp
1.1K views
•
6 slides
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Yoshiyuki MIYAGI
4K views
•
15 slides
fanscala1 1 インストールとreplまで
Toshiki Shinozaki
948 views
•
14 slides
Rubyで和暦をよみとる
Takashi Ota
1.5K views
•
15 slides
Shell で制限付き並列処理をしよう
博文 斉藤
1.8K views
•
8 slides
第6回鹿児島node.jsの会資料_内村
Koichi Uchimura
375 views
•
18 slides
More Related Content
Slideshows for you
(20)
MmapScanner
Masahiro Tomita
•
1.7K views
HSPでおいしいスープを飲む方法
Hiroaki Murayama
•
1K views
Acct v3 binary
Yutaka Matsuzawa
•
501 views
俺とMacとアダルトビデオ[社外版]
Mitsuki Ogasahara
•
2.5K views
tnct.Seminar9.03#1
Daichi Onodera
•
487 views
EmitJSの環境をちょこっと調べた
kyon mm
•
938 views
setTimeout関数の楽しみ
mtkn
•
1K views
Haskell超初心者勉強会17
Takashi Kawachi
•
670 views
fluent-plugin-resque_stat
Makoto Haruyama
•
1.9K views
Coffeescriptを初めて使う方へ
Koya Fukuda
•
978 views
OCamlでJavaScriptが幸せ
Sachirou Inoue
•
799 views
制約をつけて遊ぼう
Fumihito Yokoyama
•
753 views
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Takahiro Okumura
•
3.8K views
Of tutorials v4.0
Etsuji Nomura
•
678 views
Play frameworkをエヴァンジェる
ke-m kamekoopa
•
2.7K views
Javaで最強のfizz buzz
yy yank
•
4.9K views
2017-12-04 Linuxの基本構造とBashでの扱い方
浩平 渡邉
•
187 views
Of tutorials v1606+
Etsuji Nomura
•
474 views
Tmux
harutsugu shimoji
•
1.4K views
PHP Conference Kansai 2015
Yasuo Harada
•
1.5K views
Recently uploaded
(20)
Windows ChatGPT Bing AI.pptx
Atomu Hidaka
•
0 views
MC-800DMT intrusion detector manual
Vedard Security Alarm System Store
•
0 views
20230516 @Mix Leap Hirohiko_Suwa
Masashi Nakagawa
•
82 views
ネットワークパケットブローカー市場.pdf
HinaMiyazu
•
5 views
【2023年5月】平成生まれのためのUNIX&IT歴史講座
法林浩之
•
16 views
Forguncy8 製品概要 202305.pptx
フォーガンシー
•
7 views
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
オラクルエンジニア通信
•
27 views
《杨百翰大学毕业证|学位证书校内仿真版本》
d520dasw12
•
2 views
ChatGPT + LlamaIndex 0 .6 による チャットボット の実装
Takanari Tokuwa
•
26 views
初学者のためのプロンプトエンジニアリング実践.pptx
Akifumi Niida
•
352 views
オレオレになりがちなテスト計画を見直した話
terahide
•
25 views
☀️【麦吉尔大学毕业证成绩单留学生首选】
15sad
•
3 views
PCベース制御による集中制御.pdf
ssusercd9928
•
19 views
量子論.pdf
hiro150493
•
0 views
TestSIP (1).pdf
DeependraSingh712859
•
2 views
JSTQB_テストプロセスの概念モデル.pdf
akipii Oga
•
109 views
20230523_IoTLT_vol99_kitazaki_v1.pdf
Ayachika Kitazaki
•
107 views
留信网认证可查【拜欧拉大学文凭证书毕业证购买】
1lkjhg
•
3 views
【DL輪読会】Flow Matching for Generative Modeling
Deep Learning JP
•
711 views
①【戴尔豪斯大学毕业证文凭学位证书|工艺完美复刻】
love445ds
•
2 views
Advertisement
オレオレPHPのつくり方
オレオレPPHHPPの つくりかた
@@rrsskkyy 22001133..0033..0022 第44回闇PPHHPP勉強会
自己紹介 関山 隆介
((TTwwiitttteerr @@rrsskkyy)) 主な使用言語は PPHHPP,, CC,, OObbjjeeccttiivvee--CC,, JJaavvaaSSccrriipptt PPHHPPの改造が生業趣味です 画像処理とか圧縮アルゴリズムと かに興味あ�ります
アジェンダ PPHHPPスクリプトのコンパイルと実 行についてざっくりと。 実際にPPHHPPを改造したソースコー ドを題材に、PPHHPPを改造して構文 を追加する方法を紹介します。 GGiittHHuubbで本家pphhpp--ssrrccをffoorrkk。 hhttttppss::////ggiitthhuubb..ccoomm//rrsskkyy//pphhpp--ssrrcc
PPHHPPの コンパイルと実行
コンパイルと実行 PPHHPPスクリプトのコンパイルおよ び実行は関数ポインタの呼び出し で行われている。 zzeenndd__ccoommppiillee__ffiillee zzeenndd__ccoommppiillee__ssttrriinngg zzeenndd__eexxeeccuuttee
コンパイル 字句解析してソースコードをトー クンに分解しつつ、構文解析して バイトコードを生成する。 字句解析器:: zzeenndd__llaanngguuaaggee__ssccaannnneerr..cc 構文解析器::
zzeenndd__llaanngguuaaggee__ppaarrsseerr..cc →これらを書き換えれば、新たな リテラルや構文を追加できる!
コンパイル
実行 バイトコードを走査しつつ、命令 ((ooppccooddee))に応じたコールバック 関数を呼び出す。 ooppccooddeeとコールバック関数は zzeenndd__vvmm__ddeeff..hh
で定義されている。 →これを書き換えれば、PPHHPPの挙 動を変えられる。
仮想機械生成
PPHHPPを 改造してみよう
PPHHPPを改造するのに
必要なもの CC言語の知識 ZZeenndd EEnnggiinnee 独特の作法も YYAACCCCの知識 ((なくてもOOKK)) 折れない心 PPHHPP愛
uunnttiill//uunnlleessss構文
uunnttiill//uunnlleessss構文 PPeerrllのまね。 uunnlleessss (($$eexxpprr))
{{ ...... }} iiff文の逆で、条件式が偽のとき ブロックを評価する。 uunnttiill (($$eexxpprr)) {{ ...... }} ddoo {{ ...... }} uunnttiill (($$eexxpprr));;
uunnttiill//uunnlleessssで
やること 字句解析器にトークンを追加 “uunnlleessss”→ TT__UUNNLLEESSSS “uunnttiill”→ TT__UUNNTTIILL 構文解析器に TT__UUNNLLEESSSS//TT__UUNNTTIILLに 対応する処理を追加。 実行部((VVMM))は変更の必要なし。
SSccaallaa風のミックスイン
ミックスイン構文 SSccaallaaの nneeww
AA wwiitthh BB のまね。 $$oobbjj == nneeww AA uussee BB;; $$oobbjj == nneeww AA uussee ((BB,, CC));; 構文解析の都合で、括弧なしで uussee BB,, CC と書けるようにするのは難しかった。 $$oobbjj == nneeww AA uussee $$xx;;
ミックスイン構文で
やること 字句解析器は変更の必要なし。 構文解析器に nneeww AA uussee BB に対応 する処理を追加。 ミックスインに対応するooppccooddee 定義とコールバック関数を追加。
改造PPHHPPのビルドに 必要なツール コンパイラの再生成に
rree22cc と BBiissoonn が、GGiittで取得したソース コードからのビルドには GGNNUU AAuuttoottoooollss が必要です。 hhttttpp::////ddooccss..pphhpp..nneett//mmaannuuaall//jjaa// iinnssttaallll..uunniixx..pphhpp
改造PPHHPPをビルドする $ cd Zend $
php zend_vm_gen.php $ cd .. $ ./buildconf --force $ ./configure $ make
質問タイム
ご静聴 あ�りがとう ございました
Advertisement