SlideShare a Scribd company logo
hBp://mcpc.arnip.org/	
                                                          #csmeiji	




             How	
  to	
  Implement	
  
      a	
  CPU	
  Emulator	
  in	
  Scheme	
                     Representa9ve	
  of	
  MCPC	
  
                  Kazuhiro	
  Hishinuma	


                          MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
         1	
  
The Trigger	
 to	
  Implement	
  a	
  CPU	
  Emulator	




    MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     2	
  
MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     3	
  
MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     4	
  
MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     5	
  
MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     6	
  
(	
  ◠‿◠	
  )☛	
  
Make	
  It	
  Yourself	
        MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     7	
  
▂▅▇█▓▒░('ω')░▒▓█▇▅▂	
  
▂▅▇█▓▒░('ω')░▒▓█▇▅▂	
  
▂▅▇█▓▒░('ω')░▒▓█▇▅▂	


      MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     8	
  
The Reason	
             to	
  Implement	
  in	
  Scheme	




  MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     9	
  
In	
  Scheme,	
  You	
  can	
  …	


Get	
  Current	
  Con9nua9on	
  
             And	
  
 Return	
  Mul9ple	
  Values	
  
            MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     10	
  
Con9nua9on...?	
/*	
  Pseudo-­‐Code	
  */	
  
func9on	
  f	
  (	
  x	
  )	
  {	
  
	
  	
  res	
  =	
  x	
  +	
  1;	
   Con9nua9on	
  :=	
  
                                       A	
  Func9on-­‐Like	
  Object	
  
	
                                     To	
  Return	
  Value!!!	
  
	
  	
  return	
  (	
  res	
  );	
  
};	
  
                       MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     11	
  
What’s	
  the	
  Difference	
  
 Between	
  Func9on	
  
And	
  Con9nua9on??	

         MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     12	
  
(	
  ◠‿◠	
  )☛In	
  Func9on	


       CALL	

PROGRAM	
                                                        FUNCTION	
            RETURN	


          MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
              13	
  
(	
  ◠‿◠	
  )☛In	
  Con9nua9on	


        CALL	
                                                                  CONTINU-­‐	
  
PROGRAM	
                                                                   ATION	


           MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
                      14	
  
(	
  ◠‿◠	
  )☛	
  
A	
  Con9nua9on	
  is	
  
Like	
  A	
  Func9on,	
  
But	
  It	
  Won’t	
  Return.	
          MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     15	
  
o。(˘⊖˘	
  )	
  	
  
 A	
  Con9nua9on	
  is	
  
Like	
  A	
  Func9on…?	

      MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     16	
  
┗(☋` )┓三	
  
	
  return	
  (	
  a,	
  b,	
  c	
  );	
  

           MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     17	
  
f	
  (	
  x	
  )	
  returns	
  y	

x	
               f	
  (	
  x	
  )	
                                                                y	
         MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     18	
  
f	
  (	
  x	
  )	
  returns	
  (	
  a,	
  b,	
  c	
  )	

x	
                                                                      a	
                        f	
  (	
  x	
  )	
                               b	
                                                                         c	
                  MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     19	
  
ヾ(*>ヮ<)ノ 	
  
A	
  Func9on	
  Returns	
  
 Mul9ple	
  Values!!	
  

        MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     20	
  
Mul9ple	
  Values	
  Func9on	

x	
                                      a	
                                         b	
       f	
  (	
  x	
  )	
                                         c	


                       MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     21	
  
Composing	
  Func9ons	

x	


      f	
  (	
  x	
  )	
                              g	
  (	
  a,	
  b,	
  c	
  )	
                                                                                       d	
                                                                                       e	
                      MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
               22	
  
Composing	
  Func9ons…?	
              3	



fetch	
                               generator	

                                                             2	

      MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
           23	
  
This	
  is	
  a	
  Hardware	
  Diagram!!	
clk_gen	




                              MUX	
            0	
                                                                   dec7seg	
counter	

                                                                   dec7seg	
                             decoder	

            MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
                 24	
  
_人人人人人人人人_

> Scheme	
  is	
  a	
  HDL!! <

 ̄^Y^Y^Y^Y^Y^Y^Y^Y^ ̄	


         MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     25	
  
The Way	
to	
  Implement	
  a	
  CPU	
  Emulator	




   MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     26	
  
(	
  ◠‿◠	
  )☛Read	
  it!	




    MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     27	
  
(	
  ◠‿◠	
  )☛980	
  yen	
  (tax	
  in)	
     日
     経

年

月
号
     	
  
	




                      MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     28	
  
(	
  ◠‿◠	
  )☛Implement	
  It!!	


gr	
                                                                    mem	
                                  run	


fr	
                                                                    fetch	

pc	
                                                                      <machine>	
               MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
                 29	
  
(ฅ`・ω・´)っ=	
  
There	
  is	
  One	
  Problem.	


            MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     30	
  
State	
  Transi9on	
  on	
  Hardware	
  is	
  …	




DESTRUCTIVE!!	
               MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     31	
  
Destruc9ve	
  State	
  Transi9on	
/*	
  Pseudo-­‐Code,	
  Given	
  s:	
  Current	
  State	
  */	
  
S1: 	
  /*	
  Procedure	
  of	
  State	
  S1	
  */	
  
        	
  s	
  =	
  /*	
  S1-­‐>S2	
  */(	
  s	
  );	
  
        	
  goto	
  S2;	
  
	
  
S2: 	
  /*	
  Procedure	
  of	
  State	
  S2	
  */	
  
        	
  /*	
  …	
  */	

                         MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     32	
  
Pure	
  State	
  Transi9on	
/*	
  Pseudo-­‐Code,	
  Given	
  s:	
  Current	
  State	
  */	
  
func9on	
  S1	
  (	
  s	
  )	
  {	
  
	
  	
  /*	
  Procedure	
  of	
  State	
  S1	
  */	
  
	
  	
  return	
  S2	
  (	
  /*	
  S1-­‐>S2	
  */(	
  s	
  )	
  );	
  
}	
  
func9on	
  S2	
  (	
  s	
  )	
  {	
  
	
  	
  /*	
  Procedure	
  of	
  State	
  S2	
  ...	
  
                                                                       Tail	
  Call	

                              MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
        33	
  
p	
  (`・ω・´q)	
  
                                       It’s	
  Solved.	


MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     34	
  
The Result	
             of	
  Implement	
  in	
  Scheme	




  MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     35	
  
hBps://gist.github.com/kazh98/5117299 解説:	
  hBp://qiita.com/items/b667dc18e769c4bf857e	
  
hBps://gist.github.com/kazh98/5213280 解説:	
  このスライド	
  




       (	
  ◠‿◠	
  )☛Demonstra9on	


                                MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     36	
  
Conclusion	
•  Scheme	
  is	
  a	
  Hardware	
  Descrip9on	
  Language.	
  
•  State	
  Transi9on	
  can	
  be	
  Expressed	
  as	
  Tail	
  Call.	
  
•  To	
  Implement	
  CPU	
  Emulator	
  is	
  interes9ng.	
  



Let	
  us	
  Be	
  a	
  Schemer!!	
                         MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     37	
  
hBp://mcpc.arnip.org/	




              Thanks	
  for	
  
            YOUR	
  listening!	

                          MCPC:	
  a	
  Compe99ve	
  Programming	
  Circle	
     38	
  

More Related Content

PDF
Architecture Aware Partitioning of Open-CL Programs
PDF
Directive-based approach to Heterogeneous Computing
PDF
GPU Programming on CPU - Using C++AMP
PDF
clang-intro
PDF
LCU14 209- LLVM Linux
PDF
TMPA-2017: Modeling of PLC-programs by High-level Coloured Petri Nets
PDF
Claire protorpc
PDF
Parallel R
Architecture Aware Partitioning of Open-CL Programs
Directive-based approach to Heterogeneous Computing
GPU Programming on CPU - Using C++AMP
clang-intro
LCU14 209- LLVM Linux
TMPA-2017: Modeling of PLC-programs by High-level Coloured Petri Nets
Claire protorpc
Parallel R

Viewers also liked (7)

PDF
What Does R7RS Change Programming in Scheme?
PPTX
The Programming Language Scheme
PDF
Xhtml Basics
PDF
Implementation of Counters in ScopedBASIC
ODP
Implementing R7RS on R6RS Scheme
PDF
大学生活概論
PDF
Properties of a Convex Set in Linear Space
What Does R7RS Change Programming in Scheme?
The Programming Language Scheme
Xhtml Basics
Implementation of Counters in ScopedBASIC
Implementing R7RS on R6RS Scheme
大学生活概論
Properties of a Convex Set in Linear Space
Ad

Similar to How to Implement a CPU Emulator in Scheme (20)

PDF
ModRef'09: Gecode support for MCP
PDF
Functional Programming 之二三事
PDF
MeCC: Memory Comparison based Clone Detector
PDF
MeCC: Memory Comparison-based Code Clone Detector
PDF
Cois240 lesson01
PPTX
Computing Student Success at Montgomery College in the Web 3.0 Era
PPT
Acm icpc-briefing-prof-nbv
PPT
Computer Programming - Lecture 2
PDF
Computer Fundamentals & Intro to C Programming module i
PDF
Slide collab com
PDF
Compute Networks: 01 - Introduction to CN
PDF
65_96195_CC112_2014_1__1_1_week1.pdf
PPTX
INTRODUCTION TO C PROGRAMMING
DOC
Course Breakup - C Porgramming Language
DOC
Course Break - C Language
DOC
Student copybca sem1-c
PPT
Unit1 jwfiles
PPTX
01 computer programming
PDF
Principles of programming languages
PPT
C Language Unit-1
ModRef'09: Gecode support for MCP
Functional Programming 之二三事
MeCC: Memory Comparison based Clone Detector
MeCC: Memory Comparison-based Code Clone Detector
Cois240 lesson01
Computing Student Success at Montgomery College in the Web 3.0 Era
Acm icpc-briefing-prof-nbv
Computer Programming - Lecture 2
Computer Fundamentals & Intro to C Programming module i
Slide collab com
Compute Networks: 01 - Introduction to CN
65_96195_CC112_2014_1__1_1_week1.pdf
INTRODUCTION TO C PROGRAMMING
Course Breakup - C Porgramming Language
Course Break - C Language
Student copybca sem1-c
Unit1 jwfiles
01 computer programming
Principles of programming languages
C Language Unit-1
Ad

More from Kazuhiro Hishinuma (12)

PDF
床下からCommon Lisp
PDF
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
PDF
不動点×不動点×不動点コンビネータ
PDF
最急降下法で制約つき最適化問題を解いてみた
PDF
再帰でつくる、計算の世界
PDF
Lisper は競プロを楽しめるか?
PDF
GaucheでCGIプログラミング
PDF
明治大の活動2
PPTX
明治大の活動予告
PPTX
情報と職業プレゼン予告
KEY
#upcamp '12 Hack-a-thon Result
ODP
Scoped BASIC Presentation1
床下からCommon Lisp
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
不動点×不動点×不動点コンビネータ
最急降下法で制約つき最適化問題を解いてみた
再帰でつくる、計算の世界
Lisper は競プロを楽しめるか?
GaucheでCGIプログラミング
明治大の活動2
明治大の活動予告
情報と職業プレゼン予告
#upcamp '12 Hack-a-thon Result
Scoped BASIC Presentation1

Recently uploaded (20)

PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
KodekX | Application Modernization Development
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Cloud computing and distributed systems.
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Encapsulation theory and applications.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Machine learning based COVID-19 study performance prediction
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
MYSQL Presentation for SQL database connectivity
Unlocking AI with Model Context Protocol (MCP)
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Per capita expenditure prediction using model stacking based on satellite ima...
Review of recent advances in non-invasive hemoglobin estimation
MIND Revenue Release Quarter 2 2025 Press Release
KodekX | Application Modernization Development
Chapter 3 Spatial Domain Image Processing.pdf
Empathic Computing: Creating Shared Understanding
Digital-Transformation-Roadmap-for-Companies.pptx
Cloud computing and distributed systems.
NewMind AI Weekly Chronicles - August'25 Week I
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Encapsulation theory and applications.pdf

How to Implement a CPU Emulator in Scheme