Slide 1

Slide 1 text

1)1ΧϯϑΝϨϯε෱Ԭ 1)1ͰֶͿԾ૝Ϛγϯܕ ਖ਼نදݱΤϯδϯͷ࢓૊Έ

Slide 2

Slide 2 text

ࣗݾ঺հ ‣ ٱอాޫଇ !BOBUPP ‣ 6*69σβΠφʔɺ
 ιϑτ΢ΣΞΤϯδχΞ ‣ "TQFDUJWF--$୅ද ‣ IUUQBTQFDUJWFJP

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ ‣ Ծ૝Ϛγϯܕਖ਼نදݱΤϯδϯͷ࢓૊Έ

Slide 4

Slide 4 text

ॱʹ࿩͍ͯ͘͜͠ͱ ‣ ਖ਼نදݱΤϯδϯͷ࣮૷ํ๏ ‣ Ծ૝Ϛγϯܕਖ਼نදݱΤϯδϯͱ͸ ‣ ϚονϯάॲཧͷྲྀΕ ‣ 7.ͷ࣋ͭϨδελͱεϨουͱ໋ྩ ‣ ਖ਼نදݱ͸ͲͷΑ͏ʹίϯύΠϧ͞ΕΔ͔

Slide 5

Slide 5 text

ࠓ೔ͷ࿩Λฉ͘ͱͲ͏ͳΔ͔ ‣ ਖ਼نදݱΤϯδϯͷ࢓૊Έͬͯ͜Μͳʹ୯७ͳͷ͔
 ͬͯͼͬ͘Γ͠·͢ ࢲ͸ͼͬ͘Γ͠·ͨ͠ ‣ ਖ਼نදݱΤϯδϯ ͷ7. ͕ॻ͚ΔΑ͏ʹͳΓ·͢

Slide 6

Slide 6 text

ਖ਼نදݱΤϯδϯͷ ࣮૷ํ๏

Slide 7

Slide 7 text

‣ ͦ΋ͦ΋ਖ਼نදݱΤϯδϯͷ
 ࣮૷ํ๏ʹ͸ͳʹ͕͋Δ

Slide 8

Slide 8 text

ͭʹେผ ‣ %'"ϕʔεͷ࣮૷ํ๏ ‣ Ծ૝Ϛγϯ 7. ϕʔεͷ࣮૷ํ๏

Slide 9

Slide 9 text

Ծ૝Ϛγϯϕʔεͷ
 ਖ਼نදݱΤϯδϯͱ͸

Slide 10

Slide 10 text

Ծ૝Ϛγϯϕʔεͷ࣮૷ VM ‣ ਖ਼نදݱ༻ͷ໋ྩΛ࣋ͭ7. Ծ૝Ϛγϯ Λߏங ‣ ਖ਼نදݱΛ7.޲͚ͷ໋ྩʹίϯύΠϧ࣮ͯ͠ߦ ‣ 1$3&ͷ࣮૷͸͜Ε

Slide 11

Slide 11 text

ϚονϯάॲཧͷྲྀΕ ਖ਼نදݱΛύʔε Ծ૝Ϛγϯ༻ͷ໋ྩྻʹม׵ Ծ૝ϚγϯͰ࣮ߦ /(hoge|fuga)/ match “hoge”?

Slide 12

Slide 12 text

ਖ਼نදݱΛύʔε ‣ ਖ਼نදݱͷจࣈྻΛड͚औͬͯϝλจࣈΛύʔε /hoge?|fuga(piyo)*/ /hoge?|fuga(piyo)*/

Slide 13

Slide 13 text

7.༻ͷ໋ྩྻʹม׵ char ‘h’ char ‘o’ char ‘g’ char ‘e’ split 1, 6 jmp 11 a(piyo)*/

Slide 14

Slide 14 text

Ծ૝ϚγϯͰ࣮ߦ VM char ‘h’ char ‘o’ char ‘g’ char ‘e’ split 1, 6 jmp 11 ্͔Β ໋ྩղऍ ͍ͯ͘͠ ‣ ݁Ռ༩͑ΒΕͨจࣈྻ͕Ϛον͢Δ͔Λ൑ఆ

Slide 15

Slide 15 text

ͦ΋ͦ΋Ծ૝Ϛγϯ 7. ͬͯͳʹ

Slide 16

Slide 16 text

ීஈΑ͘ݟ͔͚Δ7. ‣ ࣮ࡍͷίϯϐϡʔλΛԾ૝Խͨ͠΋ͷ ‣ ࠓճͷ࿩ͱ͸͋·Γؔ܎͋Γ·ͤΜ

Slide 17

Slide 17 text

ࠓճͷ࿩ͷ7. ‣ ಛఆͷ໨తͷͨΊʹઃܭ͞ΕͨԾ૝తͳϚγϯ ‣ ྫ+7. ;FOE&OHJOF :"37 VM

Slide 18

Slide 18 text

7.ͷجຊߏ଄͸γϯϓϧ Ϩδελ͕छྨ εϨου ໋ྩ͕छྨ

Slide 19

Slide 19 text

Ϩδελ PC SP จࣈྻͷݱࡏҐஔ 4USJOH1PJOUFS ໋ྩͷҐஔ 1SPHSBN$PVOUFS ‣ 7.ʹͦͳΘΔม਺ηοτ ‣ ࠷ॳ͸ͲͪΒʹ΋͕ೖ͍ͬͯΔ

Slide 20

Slide 20 text

1$ʹ͕ೖ͍ͬͯͨΒ ‣ ൪໨ͷ໋ྩΛࠓݟ͍ͯΔͱ͍͏͜ͱ ‣ ໋ྩΛಡΈ͜Ή͝ͱʹΠϯΫϦϝϯτ͢Δ PC=3 char ‘h’ char ‘o’ char ‘g’ char ‘e’ split 1, 6 jmp 11

Slide 21

Slide 21 text

41ʹ͕ೖ͍ͬͯͨΒ ‣ ࢼߦ͢Δจࣈྻͷ൪໨ͷจࣈΛࠓݟ͍ͯΔͱ͍͏ ͜ͱ SP=2 “hogehoge”

Slide 22

Slide 22 text

εϨου ‣ εϨου͸Ϩδελ 1$ͱ41 Λ࣋ͭ ‣ ࣮ߦ࣌ͷίϯςΩετΈ͍ͨͳ΋ͷ ‣ ฒྻॲཧͱ͸ؔ܎ͳ͍ Thread PC SP

Slide 23

Slide 23 text

7.ͷ࠷ॳͷঢ়ଶ ‣ 7.͸࠷ॳ͸Ұ͚ͭͩεϨουΛ࣋ͬͯ࢝·Δ ‣ ໋ྩΛղऍ͢Δ͏ͪʹ૿ݮ͢Δ Thread VM ݱࡏͷεϨου

Slide 24

Slide 24 text

7.ͱεϨου ‣ 7.͸εϨουΛελοΫ͢Δ ‣ 7.͸Ұ൪্ͷεϨουͷϨδελΛૢ࡞͢Δ Thread Thread Thread VM ݱࡏͷεϨου

Slide 25

Slide 25 text

7.ʹඋΘΔͭͷ໋ྩ ‣ KNQ໋ྩࢦఆ͢ΔҐஔ΁δϟϯϓ ‣ DIBS໋ྩจࣈͷϚονΛࢼߦ͢Δ ‣ NBUDI໋ྩ7.ΛࢭΊͯϚον׬ྃ͢Δ ‣ TQMJU໋ྩεϨουΛ෼ׂ͢Δ

Slide 26

Slide 26 text

KNQ໋ྩ ‣ KNQY͸YͷҐஔʹ1$Λઃఆ͢Δ ‣ ཁ͢ΔʹHPUP jmp x

Slide 27

Slide 27 text

ਤ PC=0 SP=0 PC=5 SP=0 jmp 5 ‣ 1$Ϩδελ͕ॻ͖׵Θ͍ͬͯΔ

Slide 28

Slide 28 text

DIBS໋ྩ ‣ ݱࡏҐஔ 41 ͔ΒYͱ͍͏จࣈΛফඅ͢Δ ‣ Ϛονͨ͠Β41͕̍ͭ૿͑Δ ‣ Ϛον͠ͳ͔ͬͨΒݱࡏͷεϨου͸ফ͑Δ char x

Slide 29

Slide 29 text

ਤ ‣ ࢼߦ͍ͯ͠Δจࣈྻ͕zBBzͷͱ͖ ‣ DIBS໋ྩΛ࣮ߦ͢Δͱ41 ൪໨ͷจࣈͱൺֱͯ͠
 Ϛον͢ΔͷͰ41ͱ1$͕૿͑Δ PC=0 SP=0 PC=1 SP=1 char ‘a’

Slide 30

Slide 30 text

ਤ ‣ ࢼߦ͍ͯ͠Δจࣈྻ͕zCCzͷͱ͖ ‣ DIBS໋ྩΛ࣮ߦ͢Δͱ41 ൪໨ͷจࣈͱൺֱͯ͠
 Ϛον͠ͳ͍ͷͰݱࡏͷεϨου͕ফ͑Δ PC=0 SP=0 char ‘a’

Slide 31

Slide 31 text

εϨου͕ফ͑ΔͱͲ͏ͳΔ ‣ ελοΫͷҰ൪্ͷεϨου͕ݱࡏͷ
 εϨουʹͳ໋ͬͯྩͷॲཧ͕࢝·Δ ‣ ελοΫ͕ۭʹͳͬͨΒ7.͸ఀࢭϚονࣦഊ Thread Thread VM

Slide 32

Slide 32 text

NBUDI໋ྩ ‣ ਖ਼نදݱͷϚον͕׬ྃͨ͠ͱͯ͠
 7.ͷ࣮ߦΛࢭΊΔ Ϛον੒ޭ match

Slide 33

Slide 33 text

TQMJU໋ྩ ‣ ݱࡏͷεϨουΛ෼ׂͯ͠ɺ
 ͦΕͧΕͷεϨουͷ1$ʹYͱZΛ୅ೖ͢Δ ‣ ͪΐͬͱΘ͔ΓͮΒ͍͚ͲҰେࣄͳ໋ྩ split x, y

Slide 34

Slide 34 text

ਤ PC=0 SP=2 PC=1 SP=2 split 1,5 PC=5 SP=2 ‣ ෳ੡͕ऴΘͬͨΒ্ͷεϨου͕ݱࡏͷεϨουʹͳΔ

Slide 35

Slide 35 text

‣ Ҏ্͜Ε͚ͩɻ ‣ ਖ਼نදݱͷେ൒͸͜ΕͰදݱՄೳ

Slide 36

Slide 36 text

ਖ਼نදݱ͸Ͳ͏
 ίϯύΠϧ͞ΕΔ͔

Slide 37

Slide 37 text

‣ ͲΜͳ෩ʹίϯύΠϧ͞ΕΔ͔঺հ ‣ ࠓ͔Βਖ਼نදݱͷਓؒ7.ʹͳͬͯ
 ҰݸҰݸ໋ྩΛղऍ͍͖ͯ͠·͠ΐ͏

Slide 38

Slide 38 text

B 0 char ‘a’ 1 match ‣ ؆୯

Slide 39

Slide 39 text

BCD 0 char ‘a’ 1 char ‘b’ 2 char ‘c’ 3 match ‣ ͜Ε΋؆୯

Slide 40

Slide 40 text

" # ࿈݁ ‣ ໋ྩྻΛ୯७ʹܨ͛ΒΕΔ ‣ ࠷ޙʹNBUDI໋ྩΛஔ͘ match " ͷ໋ྩྻ # ͷ໋ྩྻ

Slide 41

Slide 41 text

B Φϓγϣϯ 0 split 1,2 1 char ‘a’ 2 match ‣ DIBSbB`ͷͱ͜Ζʹ͸͸ଞͷਖ਼نදݱͷ໋ྩྻ͕ೖΕΒΕΔ ‣ TQMJU໋ྩ͕؊ɻҰݸҰݸ௥͍ͬͯ͜͏

Slide 42

Slide 42 text

͋͞ਓؒ7.ʹͳΖ͏ Thread PC SP Execution T1 0 split 1,2 aaa T2(PC=2)࡞੒ T1 1 char ‘a’ aaa Ϛον͢ΔͷͰSPΛ૿΍͢ T1 2 match aaa Ϛον׬ྃ ‣ จࣈྻ͕zBBBzͩͬͨ৔߹5ͰϚον׬ྃ

Slide 43

Slide 43 text

จࣈྻ͕zCCCzͩͬͨΒ Thread PC SP Execution T1 0 split 1,2 bbb T2(PC=2)࡞੒ T1 1 char ‘a’ bbb จࣈϚονࣦഊ: T1ফ͑Δ T2 2 match bbb Ϛον׬ྃ ‣ 5Ͱ͸จࣈϚονࣦഊ͢Δ͕5ͰNBUDI͕࣮ߦ͞ΕΔ ‣ ݁ՌϚον੒ޭ

Slide 44

Slide 44 text

BcCબ୒ 0 split 1,3 1 char ‘a’ 2 jmp 4 3 char ‘b’ 4 match ‣ DIBSbB` DIBSbC`ͷͱ͜Ζʹ͸͸೚ҙͷਖ਼نදݱͷ໋ ྩྻ͕ೖΕΒΕΔ

Slide 45

Slide 45 text

BݸҎ্܁Γฦ͠ 0 char ‘a’ 1 split 0, 2 2 match ‣ ܁Γฦ͠ͷϚονʹ΋TQMJU໋ྩ͕׆༂ ‣ DIBSbB`ͷͱ͜Ζʹ͸೚ҙͷ໋ྩྻΛೖΕΒΕΔ

Slide 46

Slide 46 text

BݸҎ্܁Γฦ͠ 0 split 1,3 1 char ‘a’ 2 jmp 0 3 match ‣ DIBSbB`ͷͱ͜Ζʹ͸ʜ ҎԼུ

Slide 47

Slide 47 text

B ඇᩦཉͳݸҎ্܁Γฦ͠ 0 split 3,1 1 char ‘a’ 2 jmp 0 3 match ‣ TQMJUͷҾ਺͕ٯʹͳͬͯΔ

Slide 48

Slide 48 text

1)1Ͱ࣮૷ͯ͠ΈͨΒ ‣ 7.͚ͩͩͱߦ͙Β͍Ͱ࣮૷Ͱ͖ͨ ‣ IUUQCMPHBTJBMDPKQʹίʔυΛܝࡌ ‣ ؆୯ͳͷͰ࢓૊Έ͕Θ͔Ε͹୭Ͱ΋ॻ͚Δʂ

Slide 49

Slide 49 text

·ͱΊ

Slide 50

Slide 50 text

·ͱΊ ‣ ਖ਼نදݱΤϯδϯͷ࣮૷๏͸%'"࢖͏΍Γํͱ
 7.࢖͏΍Γํͷೋछྨʹେผ ‣ 7.ܕਖ਼نදݱΤϯδϯͷجຊ͸ࢸͬͯγϯϓϧ ‣ ໋ྩͭɺεϨουɺϨδελ͚ͭͩ ‣ γϯϓϧ͚ͩͲਖ਼نදݱΛ΄ͱΜͲදݱͰ͖Δ ‣ ࣮૷͕؆୯ͳͷͰॻ͍ͯΈΑ͏

Slide 51

Slide 51 text

ࠓճͷ࿩ͷݩωλ ‣ 3FHVMBS&YQSFTTJPO.BUDIJOHUIF7JSUVBM.BDIJOF "QQSPBDIͱ͍͏จॻ ‣ IUUQTXUDIDPNdSTDSFHFYQSFHFYQIUNM ‣ 7.ܕਖ਼نදݱΤϯδϯͷ࢓૊Έͱ
 ࣮૷ʹ͍ͭͯղઆ͞Ε͍ͯΔ ‣ ฏқͰΘ͔Γ΍͍͢ʂ

Slide 52

Slide 52 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ !BOBUPPCMPHBOBUPPKQ