Slide 1

Slide 1 text

:06ͱήʔϜͱࣗಈԽͱ גࣜձࣾίʔϧυɾϑϡʔδϣϯ ςομʔɹϚΠέϧ
 5FDIOJDBM%JSFDUPS$&0 ΞδϟΠϧࡳຈ೥ճ໨ ೥݄೔ ਫ

Slide 2

Slide 2 text

ग़਎ɿΞϝϦΧʢϑϩϦμभΦʔϥϯυࢢʣ
 ࢓ࣄɿήʔϜ։ൃɺ%Τϯδϯ։ൃɺΦʔσΟΦ%41։ൃɺωοτϫʔΫ։ൃɺ$&0
 ݴޠɿ$ ɺ1)1ɺ5ZQF4DSJQUɺΞηϯϒϥʢYY"3..*14 
 झຯɿσϞγʔϯʢ5PLZP%FNP'FTUͷओ࠵ऀʣɺνοϓνϡʔϯɺ73ɺ"84ɺӉ஦
 
 ࡀͰߴߍଔۀɺ6OJWFSTJUZPG$FOUSBM'MPSJEBେֶʹೖֶ
 
 ೥ɹେֶΠϯλʔϯͰ73։ൃΛ࢝Ίͯɺʮ7JSUPQJBʯΛ4*((3"1)Ͱެ։
 ೥ɹ/JOUFOEPͷΤϛϡϨʔλΛ࡞੒ɺήʔϜۀքʹೖΔ
 ೥ɹ೔ຊʢ౦ژʣ΁Ҡಈ
 ೥ɹԭೄ΁Ҡಈ
 ೥ɹגࣜձࣾίʔϧυɾϑϡʔδϣϯΛઃཱ
 ೥ɹࡳຈ΁Ҡಈ
 ೥ɹ౦ژήʔϜγϣ΢ʹग़లɺࣗࣾΦϦδφϧͷεϚϗ޲͚ήʔϜ
 ɹɹɹɹɹɹɹɹʮΫϦελϧɾΫϥογϡʯ J04"OESPJE,JOEMF'JSF Λ഑৴ ςομʔɹϚΠέϧ ࡀ michael.tedder42 @_Falken Falken42 ࣗݾ঺հ

Slide 3

Slide 3 text

ςομʔɹϚΠέϧ
 5FDIOJDBM%JSFDUPS$&0
 ๺ւಓࡳຈࢢ ෱ຊɹষ
 (BNF%FTJHO"SU%JSFDUPS
 ౦ژ౎ &JLFl3PNFP,OJHIUz4UF⒎FO
 .VTJD4PVOE%JSFDUPS
 υΠπɹσϡοηϧυϧϑࢢ

Slide 4

Slide 4 text

$PME'VTJPOΤϯδϯ ➤ ΫϩεϓϥοτϑΥʔϜ8JOEPXT-JOVYNBD04J04"OESPJE શͭͷ$16ΞʔΩςΫνϟ  ➤ ׬શϚϧνεϨουԽύϑΥʔϚϯεΛ࠷༏ઌͷͨΊɺෳ਺$16εϨουͱ(16ॲཧΛฒྻԽ ➤ ϨϯμϦϯά7VMLBOͷ"1*σβΠϯΛར༻͠ɺݱࡏ͸0QFO(-ͱ(-&4ରԠ ➤ ฒྻԽͱ࠷దԽͷύϑΥʔϚϯεͰ$16ॲཧ͸௿͍ˠεϚϗͰόοςϦʔফඅͱൃੜ͢Δ೤͕গͳ͍ ➤ ݴޠ$  ϥϜμࣜ࠷ߴʂ ɺ࢒Γ͸0CKFDUJWF$  NBD04J04 ͱ+BWB "OESPJE

Slide 5

Slide 5 text

ΫϦελϧɾΫϥογϡʲ௒߈ܸతύζϧ߹ઓʂʳ ➤ ॠؒతͳߟ࡯ྗͱ൑அྗΛඞཁͱ͢ΔɺύζϧͱΞΫγϣϯ͕߹ମͨ͠ϦΞϧλΠϜΦϯϥΠϯରઓήʔϜ ➤ $PME'VTJPOΤϯδϯΛར༻ɺ5PLZP(BNF4IPXͷϲ݄લͰήʔϜ։ൃΛ࢝Ίͨ ➤ "84&$ͰϢʔβʔ؅ཧͱϥϯΩϯά"1* 1)1 ήʔϜͷϩʔϏʔαʔόʔͱϦΞϧλΠϜରઓ௨৴ $

Slide 6

Slide 6 text

ΊΜͲ͍͘͜͞ͱᶃ ➤ ̑ͭͷϓϥοτϑΥʔϜͷϏϧυʹରͯ͠ͷίϯύΠϧͱςετ ➤ $'Τϯδϯ͸ιʔεϑΝΠϧݸ͘Β͍ʢϥΠϒϥϦؚΊʣ ➤ ίϯύΠϥ΋04ʹΑͬͯҧ͏ʢ8JOEPXT͸7JTVBM4UVEJPɺNBD04J04͸9DPEF౳ʣ

Slide 7

Slide 7 text

ΊΜͲ͍͘͜͞ͱᶃ ➤ 1$ΛͦΕͧΕ্ཱͪ͛ͯɺखಈͰϏϧυ͠ɺFYFϑΝΠϧΛ࣮ߦ͢Δͱେมͳ࡞ۀྔ ➤ ̑ͭͷϓϥοτϑΥʔϜͷϏϧυʹରͯ͠ͷίϯύΠϧͱςετ ➤ $'Τϯδϯ͸ιʔεϑΝΠϧݸ͘Β͍ʢϥΠϒϥϦؚΊʣ ➤ ίϯύΠϥ΋04ʹΑͬͯҧ͏ʢ8JOEPXT͸7JTVBM4UVEJPɺNBD04J04͸9DPEF౳ʣ

Slide 8

Slide 8 text

ΊΜͲ͍͘͜͞ͱᶄ ➤ ΞϓϦ഑৴ʹͯඞཁͳେྔͷ৘ใʢϝλσʔλʣ ➤ ΞϓϦઆ໌ɺΞΠίϯɺΩʔϫʔυɺαϙʔτ৘ใɺεΫϦʔϯγϣοτɺϓϨϏϡʔಈըʢ୺຤ൺ཰͝ͱʹʣ ➤ ݴޠ͝ͱʹɺͦͯ͠ετΞ͝ͱʹɾɾɾ ➤ 8FC6*͸Ͳ͏ͯ͠΋खಈͳͷͰɺؒҧ͍͠΍͍͢

Slide 9

Slide 9 text

ΊΜͲ͍͘͜͞ͱ શ෦ࣗಈԽʹ͢Δʂ

Slide 10

Slide 10 text

CVJMECPUͷ঺հ ➤ +FOLJOT΍(JU-BCͱಉ͡Α͏ͳܧଓతΠϯςάϨʔγϣϯ $* πʔϧ ➤ ԿΒ͔ͷΠϕϯτͰԿ͔ͷλεΫʢϓϩηεʣΛ࣮ߦ ➤ ྫɿιʔείʔυͷϦϙ΁ͷίϛοτϓογϡʹରͯ͠͸ίϯύΠϧ͢Δ

Slide 11

Slide 11 text

CVJMECPUͷ঺հ ➤ ίϯύΠϧ͚ͩͰ͸ͳ͘ɺεΫϦϓτ΋࣮ߦՄೳ ➤ +FOLJOT΍(JU-BCͱಉ͡Α͏ͳܧଓతΠϯςάϨʔγϣϯ $* πʔϧ ➤ ԿΒ͔ͷΠϕϯτͰԿ͔ͷλεΫʢϓϩηεʣΛ࣮ߦ ➤ ྫɿιʔείʔυͷϦϙ΁ͷίϛοτϓογϡʹରͯ͠͸ίϯύΠϧ͢Δ

Slide 12

Slide 12 text

CVJMECPUͷ঺հ ➤ CVJMECPU͸QZUIPO࢖ͬͯΔͷͰɺQZUIPO͕ಈ͘ϓϥοτϑΥʔϜͰར༻Մೳ ➤ +FOLJOT΍(JU-BCͱಉ͡Α͏ͳܧଓతΠϯςάϨʔγϣϯ $* πʔϧ ➤ ԿΒ͔ͷΠϕϯτͰԿ͔ͷλεΫʢϓϩηεʣΛ࣮ߦ ➤ ྫɿιʔείʔυͷϦϙ΁ͷίϛοτϓογϡʹରͯ͠͸ίϯύΠϧ͢Δ ➤ ίϯύΠϧ͚ͩͰ͸ͳ͘ɺεΫϦϓτ΋࣮ߦՄೳ

Slide 13

Slide 13 text

CVJMECPUͷ঺հ ➤ ϚελʔͱϫʔΧʔΛઃஔͯ͠ɺϚελʔ͕ϫʔΧʔʹλεΫΛৼΔ ➤ ϫʔΧʔͷλεΫͷϩάग़ྗɺλεΫਐߦͳͲ͸શͯϚελʔʹసૹɺϝʔϧ8FC4MBDLͰݟΕΔ
 ˞CVJMECPUͷ)1ΑΓ

Slide 14

Slide 14 text

$'ͰCVJMECPUͷࣄྫ ➤ CVJMECPUϚελʔ͸&$ͷUNJDSPʹઃஔ ➤ ࣾ಺ͷJ.BD ୆ ʹ7JSUVBM#PY7.Λͭ ➤ 8JOEPXT CVJMECPUϫʔΧʔ  ➤ 6CVOUV CVJMECPUϫʔΧʔ  ➤ J.BDʹ΋CVJMECPUϫʔΧʔ ➤ 9DPEFͰNBD04J04Ϗϧυ͕ඞཁͷͨΊɺ J.BD͸͔ܽͤͳ͍ ➤ ࠓޙ͸7.Λ&$ΠϯελϯεʹҠಈ༧ఆ

Slide 15

Slide 15 text

$'ͰCVJMECPUͷࣄྫ ➤ HJUϦϙδτϦ΁ͷίϛοτϓογϡ ➤ CVJMECPUϚελʔ͸HJUϦϙͷߋ৽Λ൑அ ➤ ͭͷϓϥοτϑΥʔϜͷϫʔΧʔ͕ಉ࣌ʹϏϧυ ➤ ԫ৭͸࣮ߦதɺ੨৭͸ਖ਼ৗɺ੺͸Τϥʔൃੜςετ ࣦഊ

Slide 16

Slide 16 text

$'ͰCVJMECPUͷࣄྫ ➤ 8JOEPXTϓϥοτϑΥʔϜͷϏϧυεςοϓ ➤ HJUߋ৽HJUϋογϡΛιʔεʹ͚ͭΔ ➤ σόοά൛ΛίϯύΠϧ CJU  ➤ σόοά൛ͷςετΛίϯύΠϧ CJU  ➤ σόοά൛ͷςετΛ࣮ߦ CJU  ➤ ϦϦʔε൛ΛίϯύΠϧ CJU  ➤ ϦϦʔε൛ͷςετΛίϯύΠϧ CJU  ➤ ϦϦʔε൛ͷςετΛ࣮ߦ CJU

Slide 17

Slide 17 text

$'ͰCVJMECPUͷࣄྫ ➤ શϓϥοτϑΥʔϜ͸ಉ͡Α͏ʹσόοά൛ ͱϦϦʔε൛ͷίϯύΠϧͱςετ ➤ J04ͱ"OESPJEͷςετ͸࣮ػΛ࢖༻ ➤ 64#ͰJ.BDʹܨ͍ͯΔJ1PEͱ,JOEMF ➤ J04͸ʮJPTEFQMPZʯπʔϧͰ࣮ߦ ➤ "OESPJE͸ී௨ʹʮBECʯͰ࣮ߦ

Slide 18

Slide 18 text

$'ͰCVJMECPUͷࣄྫ ➤ $'Τϯδϯͷςετ͕શͯ0,ͷ৔߹͸ήʔϜ ίϯύΠϧ͕ࣗಈతʹߦ͏ ➤ ήʔϜͷϦϦʔε൛Λ഑৴༻ʹ४උ͞ΕΔ ➤ J04͸ΞʔΧΠϒ͔ΒJQBΛ࡞੒ ➤ "OESPJE͸BQLΛిࢠॺ໊Λ͚ͭΔ ➤ ϫʔΧʔ͸ͦΕͧΕͷϓϥοτϑΥʔϜͷ࣮ߦ ϑΝΠϧΛ%SPQCPY΁ίϐʔ

Slide 19

Slide 19 text

GBTUMBOFͷ঺հ ˞GBTUMBOFͷ)1ΑΓ ➤ ΞϓϦͷεΫϦʔϯγϣοτΛࣗಈࡱӨ ➤ ෳ਺ݴޠରԠ ➤ ֤ΞϓϦετΞͷެ։"1*ར༻ͯ͠σϓϩΠ ➤ ϕʔλ൛Λςελʔ΁ ➤ ϦϦʔε൛Λެ։ετΞϖʔδ΁ ➤ ΞϓϦূ໌ॻͷࣗಈిࢠॺ໊෇͚

Slide 20

Slide 20 text

GBTUMBOFͷ঺հ ˞GBTUMBOFͷ)1ΑΓ ➤ ͭ·ΓɺΞϓϦެ։͢Δલʹςελʔʹ഑৴ ➤ J5VOFT$POOFDU͸5FTU'MJHIU ➤ (PPHMF1MBZ͸ΞϧϑΝϕʔλτϥοΫ͋Δ ➤ ΞϓϦͷεΫϦʔϯγϣοτΛࣗಈࡱӨ ➤ ෳ਺ݴޠରԠ ➤ ֤ΞϓϦετΞͷެ։"1*ར༻ͯ͠σϓϩΠ ➤ ϕʔλ൛Λςελʔ΁ ➤ ϦϦʔε൛Λެ։ετΞϖʔδ΁ ➤ ΞϓϦূ໌ॻͷࣗಈిࢠॺ໊෇͚

Slide 21

Slide 21 text

$'ͰGBTUMBOFͷࣄྫ ➤ CVJMECPUʹGBTUMBOFΛ౷߹ ➤ GBTUMBOFઃఆͱϝλσʔλ͸ήʔϜͷHJUϦϙʹ ➤ %SPQCPYʹίϐʔ͞Ε࣮ͨߦϑΝΠϧΛσϓϩΠ ➤ J04JQB͸J5VOFT$POOFDU΁ ➤ "OESPJEBQL͸(PPHMF1MBZ΁

Slide 22

Slide 22 text

$'ͰGBTUMBOFͷࣄྫ ➤ d෼ఔ౓ͰϏϧυ͸഑৴͞Εɺςελʔ ͕ࣗ෼ͷ୺຤ʹμ΢ϯϩʔυͰ͖Δ ➤ CVJMECPUʹGBTUMBOFΛ౷߹ ➤ GBTUMBOFઃఆͱϝλσʔλ͸ήʔϜͷHJUϦϙʹ ➤ %SPQCPYʹίϐʔ͞Ε࣮ͨߦϑΝΠϧΛσϓϩΠ ➤ J04JQB͸J5VOFT$POOFDU΁ ➤ "OESPJEBQL͸(PPHMF1MBZ΁

Slide 23

Slide 23 text

$'ͰGBTUMBOFͷࣄྫ ➤ ࣮ࡍήʔϜͷνΣοΫΛߦ͍ɺௐ੔͠ɺ࠶Ϗϧυ ➤ σβΠφʔ͞ΜͱϑΟʔυόοΫ͕ૣͯ͘ࡉ͔͍ ௐ੔͕Ͱ͖Δ

Slide 24

Slide 24 text

$'ͰGBTUMBOFͷࣄྫ ➤ ࣮ࡍήʔϜͷνΣοΫΛߦ͍ɺௐ੔͠ɺ࠶Ϗϧυ ➤ σβΠφʔ͞ΜͱϑΟʔυόοΫ͕ૣͯ͘ࡉ͔͍ ௐ੔͕Ͱ͖Δ ➤ 1$൛͸͋Δఔ౓ςετՄೳ͚Ͳɺλονը໘ ৮Δײ֮͸࣮ػ͕ඞཁ

Slide 25

Slide 25 text

$'ͰGBTUMBOFͷࣄྫ ➤ ׬੒ͨ͠Ϗϧυ͸֤ετΞͷ8FC6*Ͱެ։ ➤ (PPHMF1MBZ%FWFMPQFS$POTPMF͸ʮ1SPNPUFUP 1SPEVDUJPOʯϘλϯͭͰ໿࣌ؒͰੈքதʹެ։ ➤ J5VOFT$POOFDU͸Ξοϓϧͷ৹ࠪ͋ΔͨΊɺαϒϛοτ ͔ͯ͠Β̍ʙ̎೔͕ؒඞཁ ➤ 8FC6*࢖ΘͣʹGBTUMBOFͰͰ͖Δ͚Ͳɺେͨ͠࡞ۀͰ͸ͳ͍

Slide 26

Slide 26 text

$'ͰGBTUMBOFͷࣄྫ ➤ ࢒೦ͳ͕Β"NB[PO%FWFMPQFS$POTPMFͷ"1*͕·ͩެ ։͞Εͯͳ͍ͷͰɺ,JOEMF΁ͷσϓϩΠ͸͢΂ͯखಈɾɾɾ ➤ ׬੒ͨ͠Ϗϧυ͸֤ετΞͷ8FC6*Ͱެ։ ➤ (PPHMF1MBZ%FWFMPQFS$POTPMF͸ʮ1SPNPUFUP 1SPEVDUJPOʯϘλϯͭͰ໿࣌ؒͰੈքதʹެ։ ➤ J5VOFT$POOFDU͸Ξοϓϧͷ৹ࠪ͋ΔͨΊɺαϒϛοτ ͔ͯ͠Β̍ʙ̎೔͕ؒඞཁ ➤ 8FC6*࢖ΘͣʹGBTUMBOFͰͰ͖Δ͚Ͳɺେͨ͠࡞ۀͰ͸ͳ͍

Slide 27

Slide 27 text

ήʔϜεϚϗ։ൃͰͷۤ࿑

Slide 28

Slide 28 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶃ֎෦ͷϥΠϒϥϦ͸Ͱ͖Δ͚ͩར༻͠ͳ͍

Slide 29

Slide 29 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶃ֎෦ͷϥΠϒϥϦ͸Ͱ͖Δ͚ͩར༻͠ͳ͍ ➤ ͭͷϓϥοτϑΥʔϜͰͭͷ$16ΞʔΩςΫνϟͰ͸શͯਖ਼ৗʹಈ͘ͷอূ ͸ͳ͔ͳ͔ͳ͍

Slide 30

Slide 30 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ➤ ͋ΔϓϥοτϑΥʔϜͰಈ͔ͳ͍࣌ͷσόοάͱαϙʔτͷ࣌ؒʢίετʣ͸ ͔͔Δ ᶃ֎෦ͷϥΠϒϥϦ͸Ͱ͖Δ͚ͩར༻͠ͳ͍ ➤ ͭͷϓϥοτϑΥʔϜͰͭͷ$16ΞʔΩςΫνϟͰ͸શͯਖ਼ৗʹಈ͘ͷอূ ͸ͳ͔ͳ͔ͳ͍

Slide 31

Slide 31 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ➤ ࣗ࡞ͷ෺͸ϓϥοτϑΥʔϜϕʔε͕౷Ұ͢ΔͷͰ৴པ͕͋Δ ᶃ֎෦ͷϥΠϒϥϦ͸Ͱ͖Δ͚ͩར༻͠ͳ͍ ➤ ͭͷϓϥοτϑΥʔϜͰͭͷ$16ΞʔΩςΫνϟͰ͸શͯਖ਼ৗʹಈ͘ͷอূ ͸ͳ͔ͳ͔ͳ͍ ➤ ͋ΔϓϥοτϑΥʔϜͰಈ͔ͳ͍࣌ͷσόοάͱαϙʔτͷ࣌ؒʢίετʣ͸ ͔͔Δ

Slide 32

Slide 32 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ➤ ͱ͸͍͑ɺϓϥοτϑΥʔϜʹؔ܎ͷͳ͍ϥΠϒϥϦʢ[MJC TRMJUF PQFOTTM  GSFFUZQFͳͲʣ͸࢖͏͚ͲɺͲ͏ͯ͠΋मਖ਼͸ඞཁͳ͕࣌͋Δ ᶃ֎෦ͷϥΠϒϥϦ͸Ͱ͖Δ͚ͩར༻͠ͳ͍ ➤ ͭͷϓϥοτϑΥʔϜͰͭͷ$16ΞʔΩςΫνϟͰ͸શͯਖ਼ৗʹಈ͘ͷอূ ͸ͳ͔ͳ͔ͳ͍ ➤ ͋ΔϓϥοτϑΥʔϜͰಈ͔ͳ͍࣌ͷσόοάͱαϙʔτͷ࣌ؒʢίετʣ͸ ͔͔Δ ➤ ࣗ࡞ͷ෺͸ϓϥοτϑΥʔϜϕʔε͕౷Ұ͢ΔͷͰ৴པ͕͋Δ

Slide 33

Slide 33 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶄ"OESPJEͰNFNTFU ͷελοΫΦʔόʔϑϩʔ

Slide 34

Slide 34 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ➤ "OESPJEͷ৽͍͠04όʔδϣϯͰ͸OBUJWFίʔυͷෛ୲ΛݮΒͨ͢Ί04ଆͰ ৭ʑͱαϙʔτͯ͘͠ΕͯΔʢ͍͍͜ͱʣ ᶄ"OESPJEͰNFNTFU ͷελοΫΦʔόʔϑϩʔ

Slide 35

Slide 35 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶄ"OESPJEͰNFNTFU ͷελοΫΦʔόʔϑϩʔ ➤ "OESPJEͷ৽͍͠04όʔδϣϯͰ͸OBUJWFίʔυͷෛ୲ΛݮΒͨ͢Ί04ଆͰ ৭ʑͱαϙʔτͯ͘͠ΕͯΔʢ͍͍͜ͱʣ ➤ @@BFBCJ@NFNTFU ͱ͍͏৽͍ؔ͠਺͸"1*͔ΒରԠ ➤ ී௨ͷMJCDͷNFNTFU ؔ਺͸௚઀@@BFBCJ@NFNTFU ΛݺͿ ➤ "1*ΑΓલͷ୺຤Ͱ͸౰વଘࡏ͠ͳ͍ʢ࣮ߦ࣌EZOBNJDϦϯΫΤϥʔൃੜʣ

Slide 36

Slide 36 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶄ"OESPJEͰNFNTFU ͷελοΫΦʔόʔϑϩʔ ➤ "OESPJEͷ৽͍͠04όʔδϣϯͰ͸OBUJWFίʔυͷෛ୲ΛݮΒͨ͢Ί04ଆͰ ৭ʑͱαϙʔτͯ͘͠ΕͯΔʢ͍͍͜ͱʣ ➤ @@BFBCJ@NFNTFU ͱ͍͏৽͍ؔ͠਺͸"1*͔ΒରԠ ➤ ී௨ͷMJCDͷNFNTFU ؔ਺͸௚઀@@BFBCJ@NFNTFU ΛݺͿ ➤ "1*ΑΓલͷ୺຤Ͱ͸౰વଘࡏ͠ͳ͍ʢ࣮ߦ࣌EZOBNJDϦϯΫΤϥʔൃੜʣ ➤ "1*ΑΓલͷ୺຤ΛରԠ͢Δʹ͸ɾɾɾ

Slide 37

Slide 37 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶄ"OESPJEͰNFNTFU ͷελοΫΦʔόʔϑϩʔ void __aeabi_memset(void *dest, size_t n, int c) __attribute__ ((weak)) { u8 *pdst = static_cast(dest); while (n--) *pdst++ = c; } ➤ "1*ΑΓલͷ୺຤ΛରԠ͢Δʹ͸XFBLؔ਺Λ༻ҙ͠ɺॳظςετͷͨΊʹγϯϓϧͳϧʔϓͰରԠ

Slide 38

Slide 38 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶄ"OESPJEͰNFNTFU ͷελοΫΦʔόʔϑϩʔ ➤ "1*ΑΓલͷ୺຤ΛରԠ͢Δʹ͸XFBLؔ਺Λ༻ҙ͠ɺॳظςετͷͨΊʹγϯϓϧͳϧʔϓͰରԠ void __aeabi_memset(void *dest, size_t n, int c) __attribute__ ((weak)) { u8 *pdst = static_cast(dest); while (n--) *pdst++ = c; } ➤ σόοά൛Ͱਖ਼ৗʹಈ͍͚ͨͲɺϦϦʔε൛ͰଈΫϥογϡɾɾɾ

Slide 39

Slide 39 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶄ"OESPJEͰNFNTFU ͷελοΫΦʔόʔϑϩʔ ➤ DMBOHͷ࠷దԽ͕ϧʔϓ͸NFNTFU ͱಉ͡ίʔυͱ൑அ͠ɺ࣮ࡍNFNTFU ʹஔ͖׵͑ΒΕͨ void __aeabi_memset(void *dest, size_t n, int c) __attribute__ ((weak)) { u8 *pdst = static_cast(dest); while (n--) *pdst++ = c; memset(dest, n, c); // clang࠷దԽɹ }

Slide 40

Slide 40 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶄ"OESPJEͰNFNTFU ͷελοΫΦʔόʔϑϩʔ ➤ DMBOHͷ࠷దԽ͕ϧʔϓ͸NFNTFU ͱಉ͡ίʔυͱ൑அ͠ɺ࣮ࡍNFNTFU ʹஔ͖׵͑ΒΕͨ void __aeabi_memset(void *dest, size_t n, int c) __attribute__ ((weak)) { u8 *pdst = static_cast(dest); while (n--) *pdst++ = c; memset(dest, n, c); // clang࠷దԽɹ } ➤ NFNTFU ˠ@@BFBCJ@NFNTFU ˠNFNTFU ˠɾɾɾˠελοΫΦʔόʔϑϩʔʂ

Slide 41

Slide 41 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶅ"OESPJEͰΞϓϦ͕ϑΥʔΧεΛࣦ͏ͱ(-&4ίϯςΫετ͕ഇغ͞ΕΔ

Slide 42

Slide 42 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶅ"OESPJEͰΞϓϦ͕ϑΥʔΧεΛࣦ͏ͱ(-&4ίϯςΫετ͕ഇغ͞ΕΔ ➤ ϑΥʔΧεࣦ͏ͷ͸ϗʔϜϘλϯԡ͞Εͨ࣌ɺి࿩ண৴ͳͲ ➤ (-&4ίϯςΫετ͸(16༻ͷγΣʔμʔɺςΫενϟͷσʔλͱઃఆͳͲΛ؅ཧ͢Δ

Slide 43

Slide 43 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶅ"OESPJEͰΞϓϦ͕ϑΥʔΧεΛࣦ͏ͱ(-&4ίϯςΫετ͕ഇغ͞ΕΔ ➤ ϑΥʔΧεࣦ͏ͷ͸ϗʔϜϘλϯԡ͞Εͨ࣌ɺి࿩ண৴ͳͲ ➤ ϑΥʔΧε໭ͬͨΒશͯͷΞηοτΛ(16ʹ࠶Ξοϓϩʔυ͢Δඞཁ͕͋Δ ʢ࠶ελʔτʹগ͠σΟϨʔ͔͔Δʣ ➤ (-&4ίϯςΫετ͸(16༻ͷγΣʔμʔɺςΫενϟͷσʔλͱઃఆͳͲΛ؅ཧ͢Δ

Slide 44

Slide 44 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶅ"OESPJEͰΞϓϦ͕ϑΥʔΧεΛࣦ͏ͱ(-&4ίϯςΫετ͕ഇغ͞ΕΔ ➤ ϑΥʔΧεࣦ͏ͷ͸ϗʔϜϘλϯԡ͞Εͨ࣌ɺి࿩ண৴ͳͲ ➤ ϑΥʔΧε໭ͬͨΒશͯͷΞηοτΛ(16ʹ࠶Ξοϓϩʔυ͢Δඞཁ͕͋Δ ʢ࠶ελʔτʹগ͠σΟϨʔ͔͔Δʣ ➤ J04Ͱ͸ίϯςΫετ࢒ͯ͘͠ΕΔʢϝϞϦ͕͋ΔݶΓɺ͙͢ΞϓϦ͕࠶ར༻Մೳʣ ➤ (-&4ίϯςΫετ͸(16༻ͷγΣʔμʔɺςΫενϟͷσʔλͱઃఆͳͲΛ؅ཧ͢Δ

Slide 45

Slide 45 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶆ"OESPJEͰ͸୺຤͝ͱͷ(16͕ҧ͏ͷͰࡉ͔͍ରࡦ͢Δ͜ͱ͕͋Δ

Slide 46

Slide 46 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶆ"OESPJEͰ͸୺຤͝ͱͷ(16͕ҧ͏ͷͰࡉ͔͍ରࡦ͢Δ͜ͱ͕͋Δ ➤ (16͸୺຤ͷϞσϧʹΑͬͯมΘΔɺ04όʔδϣϯʹ΋(-&4ରԠ͕όϥόϥ

Slide 47

Slide 47 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶆ"OESPJEͰ͸୺຤͝ͱͷ(16͕ҧ͏ͷͰࡉ͔͍ରࡦ͢Δ͜ͱ͕͋Δ ➤ (16͸୺຤ͷϞσϧʹΑͬͯมΘΔɺ04όʔδϣϯʹ΋(-&4ରԠ͕όϥόϥ ➤ γΣμʔίϯύΠϥʹόά΋౰ͨΔ͜ͱ͸͋Δ

Slide 48

Slide 48 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶆ"OESPJEͰ͸୺຤͝ͱͷ(16͕ҧ͏ͷͰࡉ͔͍ରࡦ͢Δ͜ͱ͕͋Δ ➤ (16͸୺຤ͷϞσϧʹΑͬͯมΘΔɺ04όʔδϣϯʹ΋(-&4ରԠ͕όϥόϥ ➤ Ϣʔβʔͷ୺຤ͷόά͸౰વ௚ͤͳ͍ɾɾɾ ➤ 04ΞοϓσʔτͰظ଴ͯ͠΋ɺϢʔβʔ͸ΞϓϦ͕མͪΔ͔͠ݟͳ͍ ʢѱ͍ϨϏϡʔ࢒͢Մೳੑେʣ ➤ γΣμʔίϯύΠϥʹόά΋౰ͨΔ͜ͱ͸͋Δ

Slide 49

Slide 49 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ out vec4 outputColor; in vec2 uv; uniform sampler2D tex0; uniform sampler2D tex1; uniform vec3 lightboxData; void main() { if (uv.x < lightboxData.x) { if (lightboxData.y > 0.0) { vec2 tuv = vec2(uv.x + (1.0 - lightboxData.x), uv.y); outputColor = texture(tex0, tuv); } else { outputColor = vec4(0.0, 0.0, 0.0, 0.0); } } else { if (lightboxData.z > 0.0) { vec2 tuv = vec2(uv.x - lightboxData.x, uv.y); outputColor = texture(tex1, tuv); } else { outputColor = vec4(0.0, 0.0, 0.0, 0.0); } } }

Slide 50

Slide 50 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ out vec4 outputColor; in vec2 uv; uniform sampler2D tex0; uniform sampler2D tex1; uniform vec3 lightboxData; void main() { if (uv.x < lightboxData.x) { if (lightboxData.y > 0.0) { vec2 tuv = vec2(uv.x + (1.0 - lightboxData.x), uv.y); outputColor = texture(tex0, tuv); } else { outputColor = vec4(0.0, 0.0, 0.0, 0.0); } } else { if (lightboxData.z > 0.0) { vec2 tuv = vec2(uv.x - lightboxData.x, uv.y); // tuv is already defined outputColor = texture(tex1, tuv); } else { outputColor = vec4(0.0, 0.0, 0.0, 0.0); } } }

Slide 51

Slide 51 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶇ"OESPJEͰ͸ΦʔσΟΦυϥΠόͷରԠ͸୺຤͝ͱʹόϥόϥ

Slide 52

Slide 52 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶇ"OESPJEͰ͸ΦʔσΟΦυϥΠόͷରԠ͸୺຤͝ͱʹόϥόϥ ➤ νϟϯωϧΛಉ࣌ʹ࠶ੜͰ͖Δ୺຤͸͋Δ

Slide 53

Slide 53 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶇ"OESPJEͰ͸ΦʔσΟΦυϥΠόͷରԠ͸୺຤͝ͱʹόϥόϥ ➤ νϟϯωϧΛಉ࣌ʹ࠶ੜͰ͖Δ୺຤͸͋Δ ➤ ͨͩɺνϟϯωϧ͔͠ಉ࣌ʹ࠶ੜͰ͖Δ୺຤΋͋Δʢ࠷৽୺຤Ͱ΋ʂʣ

Slide 54

Slide 54 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶇ"OESPJEͰ͸ΦʔσΟΦυϥΠόͷରԠ͸୺຤͝ͱʹόϥόϥ ➤ νϟϯωϧΛಉ࣌ʹ࠶ੜͰ͖Δ୺຤͸͋Δ ➤ ࣗ࡞ͰΦʔσΟΦϛΫγϯάΛߦ͏͜ͱͰͲͷ୺຤Ͱ΋ཉ͍݁͠Ռ͸ग़Δ ➤ ͨͩɺνϟϯωϧ͔͠ಉ࣌ʹ࠶ੜͰ͖Δ୺຤΋͋Δʢ࠷৽୺຤Ͱ΋ʂʣ

Slide 55

Slide 55 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶈ9DPEF͔ΒʹΞοϓσʔτͨ͠ΒJ04JQB͕ଈΫϥογϡ໰୊

Slide 56

Slide 56 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶈ9DPEF͔ΒʹΞοϓσʔτͨ͠ΒJ04JQB͕ଈΫϥογϡ໰୊ ➤ ϩʔΧϧͰσόοά൛ɺϦϦʔε൛͸ਖ਼ৗʹಈ͘

Slide 57

Slide 57 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶈ9DPEF͔ΒʹΞοϓσʔτͨ͠ΒJ04JQB͕ଈΫϥογϡ໰୊ ➤ ϩʔΧϧͰσόοά൛ɺϦϦʔε൛͸ਖ਼ৗʹಈ͘ ➤ 5FTU'MJHIUͰμ΢ϯϩʔυ͢ΔJQB͸ىಈ͢ΔͱଈΫϥογϡ

Slide 58

Slide 58 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶈ9DPEF͔ΒʹΞοϓσʔτͨ͠ΒJ04JQB͕ଈΫϥογϡ໰୊ ➤ ϩʔΧϧͰσόοά൛ɺϦϦʔε൛͸ਖ਼ৗʹಈ͘ ➤ 5FTU'MJHIUͰμ΢ϯϩʔυ͢ΔJQB͸ىಈ͢ΔͱଈΫϥογϡ ➤ िؒ΄Ͳͷσόοάͱ"QQMFͱͷ࿈བྷ΍ΓͱΓͰ͍ͭ͘ͷ৚͕݅ॏͶͨ͜ͱͰπʔ ϧͷόάൃੜ͕൑໌ɿ ➤ $'Τϯδϯ಺ͰͷάϩʔόϧPQFSBUPSOFXEFMFUFͷஔ͖׵͑ ➤ ʮ+40/GPS.PEFSO$ ʯͷ֎෦ϥΠϒϥϦͷTUEBMMPDBUPS࢖͍ํ ➤ JQBΞʔΧΠϒͷ࣌ʹ͔͠ߦΘͳ͍"QQMFͷTUSJQπʔϧͷෆ۩߹

Slide 59

Slide 59 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶈ9DPEF͔ΒʹΞοϓσʔτͨ͠ΒJ04JQB͕ଈΫϥογϡ໰୊ ➤ TUSJQπʔϧ͸σϑΝϧτύϥϝʔλͰάϩʔόϧPQFSBUPSOFXEFMFUF͸EZOBNJDMJOL༻ͷFYQPSU ςʔϒϧʹग़͍ͯͳ͔ͬͨ

Slide 60

Slide 60 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶈ9DPEF͔ΒʹΞοϓσʔτͨ͠ΒJ04JQB͕ଈΫϥογϡ໰୊ ➤ TUSJQπʔϧ͸σϑΝϧτύϥϝʔλͰάϩʔόϧPQFSBUPSOFXEFMFUF͸EZOBNJDMJOL༻ͷFYQPSU ςʔϒϧʹग़͍ͯͳ͔ͬͨ ➤ TUSJQͷΦϓγϣϯΛσϑΝϧτ͔Βม͑ΔʢTUSJQVSʣͱάϩʔόϧPQFSBUPSOFXEFMFUF͸ FYQPSUςʔϒϧʹग़ΔΑ͏ʹͳͬͨ

Slide 61

Slide 61 text

ήʔϜεϚϗ։ൃͰͷۤ࿑ ᶈ9DPEF͔ΒʹΞοϓσʔτͨ͠ΒJ04JQB͕ଈΫϥογϡ໰୊ ➤ TUSJQπʔϧ͸σϑΝϧτύϥϝʔλͰάϩʔόϧPQFSBUPSOFXEFMFUF͸EZOBNJDMJOL༻ͷFYQPSU ςʔϒϧʹग़͍ͯͳ͔ͬͨ ➤ TUSJQͷΦϓγϣϯΛσϑΝϧτ͔Βม͑ΔʢTUSJQVSʣͱάϩʔόϧPQFSBUPSOFXEFMFUF͸ FYQPSUςʔϒϧʹग़ΔΑ͏ʹͳͬͨ ➤ ήʔϜ͸ਖ਼ৗʹಈ͘Α͏ʹͳͬͨʂ

Slide 62

Slide 62 text

·ͱΊ

Slide 63

Slide 63 text

·ͱΊ ➤ ܁Γฦͯ͠Δ͜ͱΛ͙͢ʹࣗಈԽʹ͢Δͱ͋ͱͰಘ͢Δ

Slide 64

Slide 64 text

·ͱΊ ➤ ܁Γฦͯ͠Δ͜ͱΛ͙͢ʹࣗಈԽʹ͢Δͱ͋ͱͰಘ͢Δ ➤ CVJMECPUͱGBTUMBOFͷ͓ӄͰʮΫϦελϧɾΫϥογϡʯ։ൃ தͷνʔϜϑΟʔυόοΫ͕ૣ͘औΕͯɺ໿ϲ݄Ͱ࡞Γ্͛ͨ

Slide 65

Slide 65 text

·ͱΊ ➤ ܁Γฦͯ͠Δ͜ͱΛ͙͢ʹࣗಈԽʹ͢Δͱ͋ͱͰಘ͢Δ ➤ CVJMECPUͱGBTUMBOFͷ͓ӄͰʮΫϦελϧɾΫϥογϡʯ։ൃ தͷνʔϜϑΟʔυόοΫ͕ૣ͘औΕͯɺ໿ϲ݄Ͱ࡞Γ্͛ͨ ➤ Τϯδϯ։ൃ͸ຊ౰ʹָ͍͚͠Ͳɺ୺຤ͷஅยԽ໰୊Ͱ࣌ؒ͸ ͔͔ͬͯ৭ʑͱۤ࿑͸͢Δ

Slide 66

Slide 66 text

·ͱΊ ➤ ܁Γฦͯ͠Δ͜ͱΛ͙͢ʹࣗಈԽʹ͢Δͱ͋ͱͰಘ͢Δ ➤ CVJMECPUͱGBTUMBOFͷ͓ӄͰʮΫϦελϧɾΫϥογϡʯ։ൃ தͷνʔϜϑΟʔυόοΫ͕ૣ͘औΕͯɺ໿ϲ݄Ͱ࡞Γ্͛ͨ ➤ Τϯδϯ։ൃ͸ຊ౰ʹָ͍͚͠Ͳɺ୺຤ͷஅยԽ໰୊Ͱ࣌ؒ͸ ͔͔ͬͯ৭ʑͱۤ࿑͸͢Δ ➤ ֮ޛͯ͠ͳ͍ํ͸࡞ͬͯ͋ΔΤϯδϯΛར༻ͨ͠ํ͕ۙಓʂ

Slide 67

Slide 67 text

ΫϦελϧɾΫϥογϡʲ௒߈ܸతύζϧ߹ઓʂʳ J04"OESPJE,JOEMF

Slide 68

Slide 68 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·͢ʂ