Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
7shi
1,342 views
V6でJIT・部分適用・継続
Lions本合宿のLT資料です。
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 11
2
/ 11
3
/ 11
4
/ 11
5
/ 11
6
/ 11
7
/ 11
8
/ 11
9
/ 11
10
/ 11
11
/ 11
More Related Content
PDF
マーク&スイープ勉強会
by
7shi
PDF
プログラミング言語 Julia の紹介
by
Kentaro Iizuka
PDF
JavaScript 勉強会 ― 変数・演算子・文
by
Appresso Engineering Team
PDF
llvm入門
by
MITSUNARI Shigeo
PDF
Emcjp item33,34
by
MITSUNARI Shigeo
PDF
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
by
Takeshi Yamamuro
PPTX
Prosym2012
by
MITSUNARI Shigeo
PDF
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
by
MITSUNARI Shigeo
マーク&スイープ勉強会
by
7shi
プログラミング言語 Julia の紹介
by
Kentaro Iizuka
JavaScript 勉強会 ― 変数・演算子・文
by
Appresso Engineering Team
llvm入門
by
MITSUNARI Shigeo
Emcjp item33,34
by
MITSUNARI Shigeo
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
by
Takeshi Yamamuro
Prosym2012
by
MITSUNARI Shigeo
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
by
MITSUNARI Shigeo
What's hot
PDF
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
PDF
ゆとりが数週間でC++を始めるようです
by
Eric Sartre
PDF
条件分岐とcmovとmaxps
by
MITSUNARI Shigeo
PDF
ディジタル信号処理 課題解説 その5
by
noname409
PDF
Emcjp item21
by
MITSUNARI Shigeo
PPTX
前期講座09
by
Takenori Nakagawa
PDF
Common LispでGPGPU
by
gos-k
PPTX
Fftw誰得ガイド
by
chunjp
PDF
Cython ことはじめ
by
gion_XY
PDF
Rcppのすすめ
by
Masaki Tsuda
PDF
Effective Modern C++ 読書会 Item 35
by
Keisuke Fukuda
PDF
RubyKaigi2014: Just in Time compiler for CRuby
by
imasahiro
PDF
LLVM最適化のこつ
by
MITSUNARI Shigeo
PDF
Haswellサーベイと有限体クラスの紹介
by
MITSUNARI Shigeo
PDF
Wrapping a C++ library with Cython
by
fuzzysphere
PDF
テーマ「最適化」
by
technocat
PDF
130727 nagoyar presentation
by
Takayuki Nuimura
PDF
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
by
MITSUNARI Shigeo
PDF
C++入門?
by
tsudaa
PDF
Cython intro prelerease
by
Shiqiao Du
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
ゆとりが数週間でC++を始めるようです
by
Eric Sartre
条件分岐とcmovとmaxps
by
MITSUNARI Shigeo
ディジタル信号処理 課題解説 その5
by
noname409
Emcjp item21
by
MITSUNARI Shigeo
前期講座09
by
Takenori Nakagawa
Common LispでGPGPU
by
gos-k
Fftw誰得ガイド
by
chunjp
Cython ことはじめ
by
gion_XY
Rcppのすすめ
by
Masaki Tsuda
Effective Modern C++ 読書会 Item 35
by
Keisuke Fukuda
RubyKaigi2014: Just in Time compiler for CRuby
by
imasahiro
LLVM最適化のこつ
by
MITSUNARI Shigeo
Haswellサーベイと有限体クラスの紹介
by
MITSUNARI Shigeo
Wrapping a C++ library with Cython
by
fuzzysphere
テーマ「最適化」
by
technocat
130727 nagoyar presentation
by
Takayuki Nuimura
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
by
MITSUNARI Shigeo
C++入門?
by
tsudaa
Cython intro prelerease
by
Shiqiao Du
Viewers also liked
PDF
ELFの動的リンク
by
7shi
PPT
無料環境でWindows Mobileアプリ開発
by
7shi
PDF
F#とトランスレータ
by
7shi
PDF
バイナリアンを目指して For a binaryen
by
Eyes, JAPAN
PPT
ELF
by
Koganti Ravikumar
PDF
Cコンパイラの改造(未)
by
7shi
ELFの動的リンク
by
7shi
無料環境でWindows Mobileアプリ開発
by
7shi
F#とトランスレータ
by
7shi
バイナリアンを目指して For a binaryen
by
Eyes, JAPAN
ELF
by
Koganti Ravikumar
Cコンパイラの改造(未)
by
7shi
Similar to V6でJIT・部分適用・継続
PDF
V6 unix in okinawa
by
magoroku Yamamoto
PPTX
アセンブラ100 さきゅりてぃ発表用
by
boropon
PDF
d-kami x86-1
by
Daisuke Kamikawa
PDF
PFI Seminar 2010/02/18
by
Preferred Networks
PDF
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
by
Masahiro Sakai
PDF
V6read#3
by
magoroku Yamamoto
PDF
フラグを愛でる
by
MITSUNARI Shigeo
PPTX
PBL1-v1-007j.pptx
by
NAIST
PDF
kagami_comput2016_07
by
swkagami
PDF
SSE4.2の文字列処理命令の紹介
by
MITSUNARI Shigeo
PDF
kagami_comput2015_7
by
swkagami
PDF
kagamicomput201707
by
swkagami
PDF
研究生のためのC++ no.2
by
Tomohiro Namba
PDF
#6:実数と繰り返し
by
長岡技術科学大学 自然言語処理研究室
PDF
V6 unix vol.2 in okinawa
by
magoroku Yamamoto
PPTX
もしも… Javaでヘテロジニアスコアが使えたら…
by
Yasumasa Suenaga
PPTX
Arduino 入門
by
mitunaga
PPTX
as-5. サブルーチン呼び出しのメカニズム
by
kunihikokaneko1
PDF
プログラマ講習第3回
by
Yuma Yoshimoto
PDF
Adding simpl GVN path into GHC
by
Kei Hibino
V6 unix in okinawa
by
magoroku Yamamoto
アセンブラ100 さきゅりてぃ発表用
by
boropon
d-kami x86-1
by
Daisuke Kamikawa
PFI Seminar 2010/02/18
by
Preferred Networks
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
by
Masahiro Sakai
V6read#3
by
magoroku Yamamoto
フラグを愛でる
by
MITSUNARI Shigeo
PBL1-v1-007j.pptx
by
NAIST
kagami_comput2016_07
by
swkagami
SSE4.2の文字列処理命令の紹介
by
MITSUNARI Shigeo
kagami_comput2015_7
by
swkagami
kagamicomput201707
by
swkagami
研究生のためのC++ no.2
by
Tomohiro Namba
#6:実数と繰り返し
by
長岡技術科学大学 自然言語処理研究室
V6 unix vol.2 in okinawa
by
magoroku Yamamoto
もしも… Javaでヘテロジニアスコアが使えたら…
by
Yasumasa Suenaga
Arduino 入門
by
mitunaga
as-5. サブルーチン呼び出しのメカニズム
by
kunihikokaneko1
プログラマ講習第3回
by
Yuma Yoshimoto
Adding simpl GVN path into GHC
by
Kei Hibino
More from 7shi
PDF
F#談話室(3) LT
by
7shi
PDF
ZIP勉強会
by
7shi
PDF
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
by
7shi
PDF
Deflate
by
7shi
PDF
CRC-32
by
7shi
PPT
LLPML
by
7shi
F#談話室(3) LT
by
7shi
ZIP勉強会
by
7shi
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
by
7shi
Deflate
by
7shi
CRC-32
by
7shi
LLPML
by
7shi
V6でJIT・部分適用・継続
1.
V6でJIT・部分適用・継続
七誌
2.
JIT • add(a, b)
{ return a + b; } – 0000: 016600 000002 mov 2(sp), r0 – 0004: 066600 000004 add 4(sp), r0 – 0008: 000207 rts pc main() { int buf[5], (*p)(); buf[0] = 0016600; buf[1] = 2; buf[2] = 0066600; buf[3] = 4; buf[4] = 0000207; p = buf; printf("%d¥n", (*p)(2, 3)); }
3.
部分適用 (1) • スタックに部分適用の値を割り込ませて
jmp SP→ 戻り先 戻り先 2 戻り先 挿入→ 2 3 3 3 add(2, 3) add2(3) let add2 = add 2
4.
部分適用 (2) • スタックに部分適用の値を割り込ませて
jmp .globl _add, _add2 main() { _add: printf("%d¥n", add(2, 3)); mov 2(sp), r0 printf("%d¥n", add2(3)); add 4(sp), r0 } rts pc _add2: 戻り先 mov (sp), r0 mov $2, (sp) 戻り先 挿入→ 2 mov r0, -(sp) jmp _add 3 3
5.
部分適用 (3)
thunk[] { • サンクに 0011600, /* mov (sp), r0 */ 部分適用の 0012716, 0, /* mov $0, (sp) */ 関数を生成 0010046, /* mov r0, -(sp) */ 0000137, 0, /* jmp *$0 */ }; • 部分適用 partapp(func, arg) { partial thunk[2] = arg; thunk[5] = func; application return thunk; } sub(a, b) { return a - b; } main() { int (*p)(); p = partapp(sub, 5); printf("%d¥n", (*p)(4)); }
6.
setjmp/longjmp • レジスタと戻り先(@スタック)を保存・復帰 _setjmp:
_longjmp: mov (sp)+, r1 mov 4(sp), r0 mov (sp), r0 mov 2(sp), r1 mov r2, (r0)+ mov (r1)+, r2 mov r3, (r0)+ mov (r1)+, r3 mov r4, (r0)+ mov (r1)+, r4 mov r5, (r0)+ mov (r1)+, r5 mov sp, (r0)+ mov (r1)+, sp mov r1, (r0) mov (r1), r1 clr r0 jmp (r1) jmp (r1)
7.
コルーチン
int caller[6], callee[6], i; • ローカル変数が test() { 使えない for (i = 1; i <= 5; i++) if (setjmp(callee) == 0) • setjmp()の戻り longjmp(caller, i); 値で0と-1を使 longjmp(caller, -1); } main() { 用しているため、 int v; それ以外の値 v = setjmp(caller); しか戻せない if (v == 0) test(); else if (v > 0) { printf("%d¥n", v); longjmp(callee, 1); }}
8.
改良版setjmp/longjmp _setjmp2:
_longjmp2: mov (sp)+, r1 mov 4(sp), r0 mov 2(sp), r1 mov (sp), r0 mov 10(r1), sp mov r2, (r0)+ mov sp, r2 mov r3, (r0)+ mov 14(r1), r3 mov r4, (r0)+ mov 16(r1), r4 mov r5, (r0)+ br 1f 0:mov (r3)+, (r2)+ mov sp, (r0)+ sub $2, r4 mov r1, (r0)+ 1:tst r4 clr (r0)+ bgt 0b clr (r0) mov (r1)+, r2 clr r0 mov (r1)+, r3 mov (r1)+, r4 jmp (r1) mov (r1), r5 jmp *4(r1)
9.
継続 • コルーチン
test() { サポート関数を int i; for (i = 0; i < 5; i++) いくつか追加 yield(i); • ローカル変数を } 保持して実行! main() { initcr(test); while (callcr()) printf("%d¥n", value); }
10.
宣伝
– 10月末にJITでサンクを作って部分適用したり、 継続の実装過程を扱う勉強会を開催します! • サンクと継続の勉強会 • 10月29日(土)13:00~18:00 • MS&BB池袋西武横店 7号室 • http://atnd.org/events/19963
11.
ご清聴ありがとうございました
Download