Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「CPUとは何か」をPHPで考える / What is a CPU?

「CPUとは何か」をPHPで考える / What is a CPU?

PHPカンファレンス 2019 の発表資料です

HASEGAWA Tomoki

December 01, 2019
Tweet

More Decks by HASEGAWA Tomoki

Other Decks in Technology

Transcript

  1. લ࠲
    લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ

    View Slide

  2. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    σδλϧճ࿏

    View Slide

  3. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    σδλϧճ࿏
    wʮίϯϐϡʔλ͸͢΂ͯΛͱͰදݱ͢Δʯ

    View Slide

  4. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    σδλϧճ࿏
    wʮίϯϐϡʔλ͸͢΂ͯΛͱͰදݱ͢Δʯ
    wʮʯ
    ʮʯͱ͸ʁ

    View Slide

  5. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    σδλϧճ࿏
    wʮίϯϐϡʔλ͸͢΂ͯΛͱͰදݱ͢Δʯ
    wʮʯ
    ʮʯͱ͸ʁ
    wόΠφϦਐ਺‎ਐ਺

    View Slide

  6. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    σδλϧճ࿏
    wʮίϯϐϡʔλ͸͢΂ͯΛͱͰදݱ͢Δʯ
    wʮʯ
    ʮʯͱ͸ʁ
    wόΠφϦਐ਺‎ਐ਺
    wσδλϧճ࿏Ͱ͸ిѹͷߴ௿

    View Slide

  7. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ

    View Slide

  8. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ

    View Slide

  9. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    )$

    View Slide

  10. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    )$
    /"/%ճ࿏

    View Slide

  11. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    "
    #
    :
    ೖྗ ग़ྗ
    "
    #
    :

    View Slide

  12. ؆ུԽ͍ͯ͠·͢ɻ࣮ࡍʹ͸఍߅͕ඞཁͰ͢

    View Slide

  13. ؆ུԽ͍ͯ͠·͢ɻ࣮ࡍʹ͸఍߅͕ඞཁͰ͢

    View Slide

  14. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    "
    #
    :
    ೖྗ ग़ྗ
    "
    # :

    View Slide

  15. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    "
    #
    :
    ೖྗ ग़ྗ
    "
    # :

    View Slide

  16. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    "
    #
    :
    ೖྗ ग़ྗ
    "
    # :

    View Slide

  17. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    "
    #
    :
    ೖྗ ग़ྗ
    "
    # :

    View Slide

  18. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :

    View Slide

  19. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :

    View Slide

  20. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7

    View Slide

  21. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7
    7

    View Slide

  22. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7
    7
    7

    View Slide

  23. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7
    7
    7

    View Slide

  24. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7
    7
    7
    7

    View Slide

  25. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :

    View Slide

  26. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7

    View Slide

  27. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7
    7

    View Slide

  28. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7
    7
    7

    View Slide

  29. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7
    7
    7

    View Slide

  30. લ࠲ ʙʮ$16ͱ͸Կ͔ʯ
    Λ1)1Ͱߟ͑Δ
    ೖྗ ग़ྗ
    "
    # :
    7
    7
    7
    7

    View Slide

  31. $16ͱ͸Կ͔
    ̘̥̪

    View Slide

  32. ௕୩઒ஐر
    ʮ$16ͱ͸Կ͔ʯ
    Λ
    1)1Ͱߟ͑Δ

    View Slide

  33. ௕୩઒ஐر
    !UPN[PI

    View Slide

  34. ௕୩઒ஐر
    !UPN[PI

    ϋογϡ

    View Slide

  35. ௕୩઒ஐر
    !UPN[PI

    ϋογϡ

    ήʔϜϘʔΠΤϛϡϨʔλ

    View Slide

  36. ௕୩઒ஐر
    4PGUXBSF%FTJHO೥݄߸
    ʮ$16ͱ͸ԿͩΖ͏͔ʯ
    ΈΜͳͷ1)1
    ʮ1)1ʹΑΔϑΝϛίϯΤϛϡϨʔλͷ࣮૷ʯ
    !UPN[PI

    View Slide

  37. ௕୩઒ஐر
    !UPN[PI

    View Slide

  38. ϥΠϑϫʔΫ
    ςοΫΧϯϑΝϨϯεӡӦࢀՃ
    8FCJ04ΞϓϦ։ൃ Ϗʔϧ
    $16 ϨτϩήʔϜػ ిࢠ޻࡞
    αοΧʔ؍ઓ
    ϨϯλϧΧʔτϨʔε ʜ
    σδλϧαʔΧεגࣜձࣾ
    ෭ஂ௕$50
    !UPN[PI

    View Slide

  39. 8FC%FWFMPQNFOUXJUI
    8&"3&)*3*/(
    IUUQXXXEHDJSDVTDPN
    ౦ژදࢀಓ

    View Slide

  40. ࠂ஌

    View Slide

  41. View Slide

  42. View Slide

  43. τʔΫԠืͨ͠ʁ
    ͸͍
    ͍͍͑

    View Slide

  44. τʔΫԠืͨ͠ʁ
    ͸͍
    ͍͍͑

    View Slide

  45. τʔΫԠืͨ͠ʁ
    ͸͍
    ͍͍͑
    ໌೔ʒ੾Ͱ͢ʂ
    ࠓ೔౤ߘͯ͠ʂ

    View Slide

  46. ࠓ೔ͷςʔϚ

    View Slide

  47. ௕୩઒ஐر
    ʮ$16ͱ͸Կ͔ʯ
    Λ
    1)1Ͱߟ͑Δ

    View Slide

  48. ௕୩઒ஐر
    ʮ$16ͱ͸Կ͔ʯ
    Λ
    1)1Ͱߟ͑Δ
    ʘͭͷࢹ఺͔Βݟͨ$16ʗ

    View Slide

  49. ͭͷࢹ఺

    View Slide

  50. ࢹ఺ ϓϩάϥϜ࣮ߦ؀ڥ

    View Slide

  51. ࢹ఺ ϓϩάϥϜ࣮ߦ؀ڥ
    ࢹ఺ ΤϛϡϨʔτର৅

    View Slide

  52. ࢹ఺ ϓϩάϥϜ࣮ߦ؀ڥ
    ࢹ఺ ΤϛϡϨʔτର৅
    ࢹ఺ ిؾճ࿏

    View Slide

  53. ୊ࡐ$16

    View Slide

  54. ୊ࡐ$16 5%

    View Slide

  55. $16ͷ૑Γ͔ͨʢॻ੶ʣ

    View Slide

  56. $16ͷ૑Γ͔ͨʢॻ੶ʣ
    ʘ໊ஶʗ

    View Slide

  57. IUUQTXXXBNB[PODPKQEQ

    View Slide

  58. IUUQTXXXBNB[PODPKQEQ

    View Slide

  59. IUUQTXXXBNB[PODPKQEQ

    View Slide

  60. IUUQTXXXBNB[PODPKQEQ
    'Ͱചͬͯ·͢ɻ
    ങ͓͏ʂʢ࡭ʣ

    View Slide

  61. View Slide

  62. View Slide

  63. ͖͍࣋ͬͯͯΔͷͰ
    ࠙਌ձͱ͔Ͱ੠͔͚͍ͯͩ͘͞

    View Slide

  64. ୊ࡐ$16 5%

    View Slide

  65. Ͱ͸ʜ

    View Slide

  66. ϓϩάϥϜ࣮ߦ؀ڥ
    ࢹ఺
    ͱͯ͠ͷ$16

    View Slide

  67. Έͳ͞Μ͓ೃછΈ

    View Slide

  68. View Slide

  69. ;JMPH;

    View Slide

  70. ;JMPH;
    :".")"
    :.

    View Slide

  71. View Slide

  72. 4)"31
    -3

    View Slide

  73. ϓϩάϥϜ࣮ߦ؀ڥͱͯ͠ͷ$16

    View Slide

  74. ϓϩάϥϜ࣮ߦ؀ڥͱͯ͠ͷ$16
    wϚγϯޠϓϩάϥϜͷ࣮ߦ؀ڥ

    View Slide

  75. ϓϩάϥϜ࣮ߦ؀ڥͱͯ͠ͷ$16
    wϚγϯޠϓϩάϥϜͷ࣮ߦ؀ڥ
    wVTSCJOQIQϚγϯޠϓϩάϥϜ

    View Slide

  76. ϓϩάϥϜ࣮ߦ؀ڥͱͯ͠ͷ$16
    wϚγϯޠϓϩάϥϜͷ࣮ߦ؀ڥ
    wVTSCJOQIQϚγϯޠϓϩάϥϜ
    w$ݴޠ‎χʔϞχοΫ‎Ϛγϯޠ
    ίϯύΠϧ Ξηϯϒϧ

    View Slide

  77. 5%ͷϚγϯޠ

    View Slide

  78. 5%ͷϚγϯޠ
    wϏοτͷ໋ྩϏοτͷҾ਺

    View Slide

  79. 5%ͷϚγϯޠ
    wϏοτͷ໋ྩϏοτͷҾ਺
    ʢΦϖίʔυʣ ʢΦϖϥϯυʣ

    View Slide

  80. 5%ͷϚγϯޠ
    wϏοτͷ໋ྩϏοτͷҾ਺
    w໋ྩόΠτ
    ʢΦϖίʔυʣ ʢΦϖϥϯυʣ

    View Slide

  81. 5%ͷϚγϯޠ
    wϏοτͷ໋ྩϏοτͷҾ਺
    w໋ྩόΠτ
    w໋ྩΛϝϞϦʹ֨ೲ͞Εͨॱ൪ʹ࣮ߦ͢Δ
    ʢΦϖίʔυʣ ʢΦϖϥϯυʣ

    View Slide

  82. 5%ͷϚγϯޠ
    wϏοτͷ໋ྩϏοτͷҾ਺
    w໋ྩόΠτ
    w໋ྩΛϝϞϦʹ֨ೲ͞Εͨॱ൪ʹ࣮ߦ͢Δ
    ʢΦϖίʔυʣ ʢΦϖϥϯυʣ

    View Slide

  83. 5%ͷϚγϯޠ

    View Slide

  84. 5%ͷϚγϯޠ
    Φϖίʔυ

    Φϖϥϯυʢ*Nʣ


    View Slide

  85. 5%ͷϚγϯޠ
    Φϖίʔυ

    Φϖϥϯυʢ*Nʣ


    "%%" *N

    View Slide

  86. 5%ͷϚγϯޠ
    Φϖίʔυ

    Φϖϥϯυʢ*Nʣ


    "Ϩδελʹ*Nͷ஋Λ଍͢
    "%%" *N

    View Slide

  87. 5%ͷϚγϯޠ
    Φϖίʔυ

    Φϖϥϯυʢ*Nʣ


    ""
    "Ϩδελʹ*Nͷ஋Λ଍͢
    "%%" *N

    View Slide

  88. 5%ͷ໋ྩηοτ
    ໋ྩ
    ʢχʔϞχοΫʣ
    ಈ࡞
    0QDPEF
    ʢਐʣ
    0QDPEF
    ʢਐʣ
    "%%" *N "Ϩδελʹ*NΛ଍͢ C Y
    .07" # #Ϩδελͷ஋Λ"Ϩδελʹసૹ͢Δ C Y
    */" *0ϙʔτ͔Β"Ϩδελʹ஋ΛಡΈࠐΉ C Y
    .07" *N "Ϩδελʹ*Nͷ஋Λసૹ͢Δ C Y
    +.1*N *Nʹδϟϯϓ͢Δ C YG

    View Slide

  89. 5%ͷ໋ྩηοτ
    ໋ྩ
    ʢχʔϞχοΫʣ
    ಈ࡞
    0QDPEF
    ʢਐʣ
    0QDPEF
    ʢਐʣ
    "%%" *N "Ϩδελʹ*NΛ଍͢ C Y
    .07" # #Ϩδελͷ஋Λ"Ϩδελʹసૹ͢Δ C Y
    */" *0ϙʔτ͔Β"Ϩδελʹ஋ΛಡΈࠐΉ C Y
    .07" *N "Ϩδελʹ*Nͷ஋Λసૹ͢Δ C Y
    +.1*N *Nʹδϟϯϓ͢Δ C YG
    શ໋ྩ

    View Slide

  90. 5%ͷϚγϯޠϓϩάϥϜ
    ΞυϨε όΠφϦ ໋ྩ ҙຯ
    # 065 065ϙʔτʹYYYY
    # 065 Λग़ྗ͢Δ
    # 065
    # 065
    # 065
    # 065
    ' +.1 ʹδϟϯϓ͢Δ

    View Slide

  91. View Slide

  92. 065*NYYYY

    View Slide

  93. 065*NYYYY

    View Slide

  94. 065*NYYYY

    +.1*NYYYY

    View Slide

  95. 065*NYYYY

    +.1*NYYYY

    View Slide

  96. 065*NYYYY

    +.1*NYYYY

    065ϙʔτ

    View Slide

  97. ಈ࡞ΛݟͯΈΑ͏

    View Slide

  98. View Slide

  99. View Slide

  100. ϓϩάϥϜ࣮ߦ؀ڥͱͯ͠$16
    Λݟͨ࣌ͷߟ͑ํ

    View Slide

  101. ϓϩάϥϜ࣮ߦ؀ڥͱͯ͠$16
    wϓϩάϥϜΛ࣮ߦͯ͘͠ΕΔଘࡏ
    ʢ˺ݴޠʣ
    Λݟͨ࣌ͷߟ͑ํ

    View Slide

  102. ϓϩάϥϜ࣮ߦ؀ڥͱͯ͠$16
    wϓϩάϥϜΛ࣮ߦͯ͘͠ΕΔଘࡏ
    ʢ˺ݴޠʣ
    Λݟͨ࣌ͷߟ͑ํ
    wࣗ෼ͷ࢖͏ػೳͷΈͷཧղͰ0,
    ʢ͢΂ͯͷ໋ྩɾ࢓༷Λ஌Δඞཁ͸ແ͍ʣ

    View Slide

  103. $16ͱ͸Կ͔
    ̘̥̪

    View Slide

  104. ΤϛϡϨʔτର৅
    ࢹ఺
    ͱͯ͠ͷ$16

    View Slide

  105. ΤϛϡϨʔτର৅ͱͯ͠ͷ$16
    wΤϛϡϨʔλͷ$16෦෼

    View Slide

  106. ΤϛϡϨʔτର৅ͱͯ͠ͷ$16
    w$16ͷ;Δ·͍Λ
    ιϑτ΢ΣΞͱ࣮ͯ͠૷
    wΤϛϡϨʔλͷ$16෦෼

    View Slide

  107. 1)1Ͱ࣮૷ͯ͠ΈΔ

    View Slide

  108. ϝϞϦͷ࣮૷
    ໋ྩͷ࣮૷
    *0ͷ࣮૷

    View Slide

  109. ϝϞϦͱ͸ͲΜͳ΋ͷʁ
    wΞυϨεʢ൪஍ʣ͝ͱʹόΠτͷσʔλΛ
    อ࣋͢ΔσόΠε

    View Slide

  110. ϝϞϦͱ͸ͲΜͳ΋ͷʁ
    wΞυϨεʢ൪஍ʣ͝ͱʹόΠτͷσʔλΛ
    อ࣋͢ΔσόΠε
    ΞυϨε όΠφϦ ໋ྩ ҙຯ
    # 065 065ϙʔτʹYYYY
    # 065 Λग़ྗ͢Δ
    # 065
    # 065
    # 065
    # 065
    ' +.1 ʹδϟϯϓ͢Δ

    View Slide

  111. ϝϞϦͱ͸ͲΜͳ΋ͷʁ
    wΞυϨεʢ൪஍ʣ͝ͱʹόΠτͷσʔλΛ
    อ࣋͢ΔσόΠε

    View Slide

  112. ϝϞϦͱ͸ͲΜͳ΋ͷʁ
    w$16͸ΞυϨεΛࢦఆͯ͠σʔλΛಡΈॻ͖͢Δ
    wΞυϨεʢ൪஍ʣ͝ͱʹόΠτͷσʔλΛ
    อ࣋͢ΔσόΠε

    View Slide

  113. ϝϞϦͱ͸ͲΜͳ΋ͷʁ
    w$16͸ΞυϨεΛࢦఆͯ͠σʔλΛಡΈॻ͖͢Δ
    wΞυϨεʢ൪஍ʣ͝ͱʹόΠτͷσʔλΛ
    อ࣋͢ΔσόΠε
    w30.΋3".΋$16Ωϟογϡ΋
    44%΋)%%΋ࢴςʔϓ΋޿ٛͷϝϞϦɻ
    ҧ͍͸ʢ෺ཧతͳʣେ͖͞ɾ଎౓ɾՁ֨ɻ

    View Slide

  114. Ͳͷ༷ʹϝϞϦΛදݱ͢Δʁ
    ΞυϨε όΠφϦ ໋ྩ ҙຯ
    # 065 065ϙʔτʹYYYY
    # 065 Λग़ྗ͢Δ
    # 065
    # 065
    # 065
    # 065
    ' +.1 ʹδϟϯϓ͢Δ

    View Slide

  115. Ͳͷ༷ʹϝϞϦΛදݱ͢Δʁ
    ΞυϨε όΠφϦ ໋ྩ ҙຯ
    # 065 065ϙʔτʹYYYY
    # 065 Λग़ྗ͢Δ
    # 065
    # 065
    # 065
    # 065
    ' +.1 ʹδϟϯϓ͢Δ
    21)1ʹɺ͜ΕΛදݱ͢Δͷʹ
    ϐολϦͷݴޠ࢓༷͕
    ͋Γ·͢ΑͶɻԿͰ͠ΐ͏ʁ

    View Slide

  116. ͨ͑͜

    View Slide

  117. ഑ྻ
    ͨ͑͜

    View Slide

  118. ఴࣈΞυϨε
    ஋όΠτͷϚγϯޠ
    ഑ྻ
    ͨ͑͜

    View Slide

  119. class Cpu
    {
    private $ram;
    }
    ϝϞϦͷ࣮૷

    View Slide

  120. class Cpu
    {
    public function __construct()
    {
    $this->ram = array_fill(0, 0b1111, 0);
    $this->pc = $this->a = $this->b = 0;
    }
    private $ram;
    private $pc;
    private $a;
    private $b;
    ϝϞϦͷॳظԽͱϨδελͷ࣮૷

    View Slide

  121. ϝϞϦͷ࣮૷
    ໋ྩͷ࣮૷
    *0ͷ࣮૷

    View Slide

  122. 5%ͷϚγϯޠ
    0QDPEF

    *Nʢ0QFSBOE



    ""
    "Ϩδελʹ*Nͷ஋Λ଍͢
    "%%" *N

    View Slide

  123. public function executeInstruction()
    {

    View Slide

  124. public function executeInstruction()
    {
    $byte = $this->ram[$this->pc];

    View Slide

  125. public function executeInstruction()
    {
    $byte = $this->ram[$this->pc];
    1$ϓϩάϥϜΧ΢ϯλ

    View Slide

  126. public function executeInstruction()
    {
    $byte = $this->ram[$this->pc];
    1$ϓϩάϥϜΧ΢ϯλ
    ࣮ߦதͷΞυϨε

    View Slide

  127. public function executeInstruction()
    {
    $byte = $this->ram[$this->pc];

    View Slide

  128. public function executeInstruction()
    {
    $byte = $this->ram[$this->pc];
    0QDPEF

    *Nʢ0QFSBOE


    View Slide

  129. $opcode = $byte >> 4;
    $im = $byte & 0b00001111;
    public function executeInstruction()
    {
    $byte = $this->ram[$this->pc];
    0QDPEF

    *Nʢ0QFSBOE


    View Slide

  130. $opcode = $byte >> 4;
    $im = $byte & 0b00001111;
    public function executeInstruction()
    {
    $byte = $this->ram[$this->pc];

    View Slide

  131. $opcode = $byte >> 4;
    $im = $byte & 0b00001111;
    public function executeInstruction()
    {
    switch ($opcode){
    case 0b0000:
    // ADD A, Im
    $this->a += $im;
    break;
    }
    $byte = $this->ram[$this->pc];

    View Slide

  132. $opcode = $byte >> 4;
    $im = $byte & 0b00001111;
    public function executeInstruction()
    {
    switch ($opcode){
    case 0b0000:
    // ADD A, Im
    $this->a += $im;
    break;
    }
    $byte = $this->ram[$this->pc];
    case 0b0001:

    View Slide

  133. $opcode = $byte >> 4;
    $im = $byte & 0b00001111;
    public function executeInstruction()
    {
    switch ($opcode){
    case 0b0000:
    // ADD A, Im
    $this->a += $im;
    break;
    }
    $this->pc++;
    }
    $byte = $this->ram[$this->pc];
    case 0b0001:

    View Slide

  134. ϝϞϦͷ࣮૷
    ໋ྩͷ࣮૷
    *0ͷ࣮૷

    View Slide

  135. case 0b0110:
    // IN B
    $this->b = $this->in;
    break;

    View Slide

  136. case 0b0110:
    // IN B
    $this->b = $this->in;
    break;
    case 0b1001:
    // OUT B
    $this->out = $this->b;
    break;

    View Slide

  137. case 0b0110:
    // IN B
    $this->b = $this->in;
    break;
    case 0b1001:
    // OUT B
    $this->out = $this->b;
    break;
    case 0b1011:
    // OUT Im
    $this->out = $operand;
    break;

    View Slide

  138. DQVOFX5Ea$QV

    do {
    printf("PC: 0b%04b > ", $cpu->pc);
    $stdin = fgets(STDIN);
    $cpu->in = bindec($stdin);
    $cpu->executeInstruction();
    printf("IN: 0b%04b OUT: 0b%04b\n",
    $cpu->in, $cpu->out);
    } while(true);

    View Slide

  139. ͜ΕͰ׬੒

    View Slide

  140. IUUQTHJUIVCDPNIBTFHBXBUPNPLJQIQUFSNJOBMUEFNVMBUPS

    View Slide

  141. ಈ࡞ΛΈͯΈΑ͏

    View Slide

  142. View Slide

  143. View Slide

  144. ΤϛϡϨʔτର৅ͱͯ͠$16
    Λݟͨ࣌ͷߟ͑ํ

    View Slide

  145. ΤϛϡϨʔτର৅ͱͯ͠$16
    Λݟͨ࣌ͷߟ͑ํ
    wର৅$16༻ʹॻ͔Εͨ
    શͯͷϓϩάϥϜΛಈ࡞ͤ͞Δଘࡏ

    View Slide

  146. ΤϛϡϨʔτର৅ͱͯ͠$16
    w$16࢓༷ͷ׬શͳཧղ
    Λݟͨ࣌ͷߟ͑ํ
    wର৅$16༻ʹॻ͔Εͨ
    શͯͷϓϩάϥϜΛಈ࡞ͤ͞Δଘࡏ

    View Slide

  147. ͪͳΈʹ

    View Slide

  148. QIQ
    [email protected]
    DQVOFX5Ea$QV

    DQVSBN
    C
    C
    C
    C
    C
    C
    C



    >
    EP\
    NBJOMPPQ
    ^XIJMF USVF

    View Slide

  149. QIQ
    [email protected]
    DQVOFX5Ea$QV

    DQVSBN
    C
    C
    C
    C
    C
    C
    C



    >
    EP\
    NBJOMPPQ
    ^XIJMF USVF

    View Slide

  150. QIQ
    [email protected]
    DQVOFX5Ea$QV

    DQVSBN
    C
    C
    C
    C
    C
    C
    C



    >
    EP\
    NBJOMPPQ
    ^XIJMF USVF

    ϝϞϦʹϓϩάϥϜΛ
    ಡΈࠐΜͰ͍Δ

    View Slide

  151. QIQ
    [email protected]
    DQVOFX5Ea$QV

    DQVSBN
    C
    C
    C
    C
    C
    C
    C



    >
    EP\
    NBJOMPPQ
    ^XIJMF USVF

    ϝϞϦʹϓϩάϥϜΛ
    ಡΈࠐΜͰ͍Δ
    04ͷ໾ׂ

    View Slide

  152. $16ͱ͸Կ͔
    ̘̥̪

    View Slide

  153. ిؾճ࿏
    ࢹ఺
    ͱͯ͠ͷ$16

    View Slide

  154. $16Λϋʔυ΢ΣΞͱ࣮ͯ͠૷
    ͢Δ৔߹ͷߟ͑ํ

    View Slide

  155. 5%ͷ$16໋ྩ

    View Slide

  156. 5%ͷ$16໋ྩ
    ͍Ζ͍Ζͳ໋ྩ͕͋Δ͕
    ͭ·Δͱ͜Ζ

    View Slide

  157. Կ͔ͱԿ͔Λ଍ͯ͠
    Ͳ͔͜ʹసૹ͢Δ
    5%ͷ$16໋ྩ
    ͍Ζ͍Ζͳ໋ྩ͕͋Δ͕
    ͭ·Δͱ͜Ζ

    View Slide

  158. "%%" *Nͷ৔߹
    0QDPEF

    *Nʢ0QFSBOE



    "Ϩδελʹ*Nͷ஋Λ଍͢
    "%%" *N

    View Slide

  159. "%%" *Nͷ৔߹
    0QDPEF

    *Nʢ0QFSBOE



    ""
    "Ϩδελʹ*Nͷ஋Λ଍͢
    "%%" *N

    View Slide

  160. .07" #ͷ৔߹
    0QDPEF

    *Nʢ0QFSBOE



    "Ϩδελʹ#Ϩδελͷ஋Λ
    సૹ͢Δ
    .07" #

    View Slide

  161. .07" #ͷ৔߹
    0QDPEF

    *Nʢ0QFSBOE



    "Ϩδελʹ#Ϩδελͷ஋Λ
    సૹ͢Δ
    .07" #
    "#

    View Slide

  162. 5%ͷճ࿏ߏ੒

    View Slide

  163. View Slide

  164. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    */
    ϙʔτ
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ

    View Slide

  165. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    */
    ϙʔτ
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ

    View Slide

  166. */
    ϙʔτ
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔

    View Slide

  167. */
    ϙʔτ
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔

    View Slide

  168. */
    ϙʔτ
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔

    View Slide

  169. */
    ϙʔτ
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    0QDPEF

    *Nʢ0QFSBOE


    ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔

    View Slide

  170. */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    0QDPEF

    *Nʢ0QFSBOE


    ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔

    View Slide

  171. */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔

    View Slide

  172. */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔

    View Slide

  173. */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔

    View Slide

  174. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ

    View Slide

  175. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ͦΕΛͲ͏ܾΊΔʁ

    View Slide

  176. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ͦΕΛͲ͏ܾΊΔʁ
    ͦΕ໋͕ͦ͜ྩͳͷͩʂ

    View Slide

  177. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    ͦΕΛͲ͏ܾΊΔʁ
    ͦΕ໋͕ͦ͜ྩͳͷͩʂ
    0QDPEF

    *Nʢ0QFSBOE


    View Slide

  178. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    0QDPEF

    *Nʢ0QFSBOE


    View Slide

  179. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    0QDPEF

    *Nʢ0QFSBOE


    View Slide

  180. ԿͱԿΛ଍ͯ͠Ͳ͜ʹసૹ͢Δ͔
    ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    0QDPEF

    *Nʢ0QFSBOE


    View Slide

  181. ੩తճ࿏Λॲཧ૷ஔԽ͢Δଘࡏ

    View Slide

  182. ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ

    View Slide

  183. ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ

    View Slide

  184. ΫϩοΫ
    ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ

    View Slide

  185. ΫϩοΫ
    ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    1$

    View Slide

  186. ΫϩοΫ
    ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    1$
    1$

    View Slide

  187. ΫϩοΫ
    ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    1$
    1$
    1$

    View Slide

  188. ΫϩοΫ
    ্ҐCJU
    */
    ϙʔτ
    ԼҐCJU
    "
    Ϩδελ
    #
    Ϩδελ
    065
    ϙʔτ
    1$
    Ϩδελ
    Ճࢉػ
    ϝϞϦ
    ηϨΫλ
    1$
    1$
    1$

    View Slide

  189. ిؾճ࿏ͱͯ͠$16
    Λݟͨ࣌ͷߟ͑ํ

    View Slide

  190. ిؾճ࿏ͱͯ͠$16
    wΫϩοΫʹैͬͯঢ়ଶભҠ͢Δճ࿏ͱͯ͠
    $16໋ྩΛදݱͨ͠ଘࡏ
    Λݟͨ࣌ͷߟ͑ํ

    View Slide

  191. ిؾճ࿏ͱͯ͠$16
    wΫϩοΫʹैͬͯঢ়ଶભҠ͢Δճ࿏ͱͯ͠
    $16໋ྩΛදݱͨ͠ଘࡏ
    Λݟͨ࣌ͷߟ͑ํ
    w࢓༷ͱ෺ཧͷύζϧΛղ͍ͯ$16࢓༷Λ
    ૑Γ͋͛Δ

    View Slide

  192. $16ͱ͸Կ͔
    ̘̥̪

    View Slide

  193. ·ͱΊ

    View Slide

  194. ·ͱΊ
    w$16ͱݴͬͯ΋ͲΜͳཱ৔ͰͦΕΛ
    ݟΔ͔ʹΑͬͯݟ͑ํ͕ҧ͏ʂ

    View Slide

  195. ·ͱΊ
    w$16ͱݴͬͯ΋ͲΜͳཱ৔ͰͦΕΛ
    ݟΔ͔ʹΑͬͯݟ͑ํ͕ҧ͏ʂ
    wΤϛϡϨʔλ͸೉͍͠΋ͷͰ͸ͳ͍Ͷʂ

    View Slide

  196. ·ͱΊ
    w$16ͱݴͬͯ΋ͲΜͳཱ৔ͰͦΕΛ
    ݟΔ͔ʹΑͬͯݟ͑ํ͕ҧ͏ʂ
    wΤϛϡϨʔλ͸೉͍͠΋ͷͰ͸ͳ͍Ͷʂ
    w$16ࣗ࡞΋໘ന͍Αʂ

    View Slide

  197. ·ͱΊ
    w$16ͱݴͬͯ΋ͲΜͳཱ৔ͰͦΕΛ
    ݟΔ͔ʹΑͬͯݟ͑ํ͕ҧ͏ʂ
    wΤϛϡϨʔλ͸೉͍͠΋ͷͰ͸ͳ͍Ͷʂ
    w$16ࣗ࡞΋໘ന͍Αʂ
    w΍ͬͯΈΑ͏ʂ

    View Slide

  198. ͓ΘΓ
    !UPN[PI

    View Slide

  199. ࠶ࠂ஌

    View Slide

  200. View Slide

  201. ͓ΘΓ
    !UPN[PI

    View Slide

  202. ༨ஊ

    View Slide

  203. 5%ͷϓϩάϥϜผWFS

    View Slide

  204. ϚγϯޠͰॻ͔ΕͨϓϩάϥϜ

    View Slide

  205. ϚγϯޠͰॻ͔ΕͨϓϩάϥϜ
    YG

    View Slide

  206. Y .07" "ϨδελʹΛసૹ
    Y "%%" "ϨδελʹΛ଍͢
    Y .07# " #Ϩδελʹ"Ϩδελͷ
    ஋Λసૹ
    Y 065# #Ϩδελͷ஋Λ*0
    ϙʔτʹग़ྗ
    Y ' +.1Y Yʹδϟϯϓ
    ϚγϯޠͰॻ͔ΕͨϓϩάϥϜ

    View Slide

  207. ͓ΘΓ
    !UPN[PI

    View Slide