Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
I wanted a computer, but all I got was a transi...
Search
Denis Defreyne
September 08, 2015
Programming
310
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
I wanted a computer, but all I got was a transistor
Denis Defreyne
September 08, 2015
More Decks by Denis Defreyne
See All by Denis Defreyne
The importance of naming
denisdefreyne
0
200
An introduction to fibers
denisdefreyne
0
320
Code as data (RubyConfBY 2019 edition)
denisdefreyne
0
190
Code as data
denisdefreyne
0
270
How to memoize
denisdefreyne
0
260
Clean & fast code with enumerators
denisdefreyne
0
220
Fibers
denisdefreyne
0
580
Let’s create a programming language! [SoundCloud HQ edition]
denisdefreyne
0
300
Let’s create a programming language! [RUG::B edition]
denisdefreyne
1
280
Other Decks in Programming
See All in Programming
AmebaブログはKMPから卒業します
kmars0605
0
300
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.1k
dotNET_vulnclicker_intro.pdf
deka_morita
0
160
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
220
Domain-Driven Transformation
hschwentner
2
2.4k
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
260
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
220
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
170
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
160
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
240
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.1k
ChromeでローカルLLM
ryu1013
0
180
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Building Adaptive Systems
keathley
44
3.3k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
960
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
610
Design in an AI World
tapps
1
370
How GitHub (no longer) Works
holman
316
150k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
510
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
600
Transcript
I wanted a computer, but all I got was a
transistor. Denis Defreyne 1
2 I will explain how to build a computer from
scratch. I cannot do this without taking some shortcuts. I will tell lies. CAUTION
3
In the beginning, the transistor was created. 4
5 GATE SOURCE DRAIN
6 GATE SOURCE DRAIN
7 GATE SOURCE DRAIN
8
9
10
11
12 AND
13
14
15
16
OR 17
Now we have gates, and we can forget about transistors.
18
19 OR AND XOR NAND NOT …
A B Sum 0 0 0 0 1 1 1
0 1 1 1 0 20
A B Carry 0 0 0 1 A B Sum
Carry 0 0 0 0 1 1 1 0 1 1 1 0 21 AND XOR
22 AND A B CARRY XOR SUM
ADD CARRY SUM A B 23
24 ADD CARRY SUM A B CARRY
25 ADD SUM 0 A 0 B 0
26 ADD SUM 0 A 0 B 0 ADD SUM
1 A 1 B 1
27 ADD SUM 0 A 0 B 0 ADD SUM
1 A 1 B 1 ADD SUM 0 A 0 B 0 ADD SUM 1 A 1 B 1 ADD A 2 B 2 SUM 2
28 ADD A B SUM
ADD 00010001 00000101 00010110 29
ADD 17 5 22 30
31 ADD R A B MUL R A B DIV
R A B MOD R A B
A B ADD MUL DIV MOD R R R R
32
A B ADD MUL DIV MOD MUX S R 33
34 MUX
35 0 MUX
36 1 MUX
37 2 MUX
38 3 MUX
39 A B ADD MUL DIV MOD MUX S R
40 ALU R A B S
A B S Result 15 7 0 (+) 22 15
7 1 (*) 105 15 7 2 (/) 2 15 7 3 (%) 1 41
Now we have an arithmetic logic unit. 42
43 OR NOT OR NOT Q S R
OR NOT OR NOT Q S R 44
OR NOT OR NOT Q S R 45
OR NOT OR NOT Q S R 46
OR NOT OR NOT Q S R 47
OR NOT OR NOT Q S R 48
49 SR-LATCH S R Q set reset
D-LATCH D E Q 50 data enable write
51 D-LATCH D 0 Q 0 D-LATCH D 1 Q
1 D-LATCH D 2 Q 2 D-LATCH D 3 Q 3 D-LATCH D 4 Q 4 D-LATCH D 5 Q 5 D-LATCH D 6 Q 6 D-LATCH D 7 Q 7 E
52 REGISTER (8 BIT) D E Q
Now we have registers. 53
Q: What distinguishes a computer from a simple calculator? 54
A: You can program a computer, but not a calculator.
55
56 OPCODE VALUE 1 VALUE 2 2 7 15
57 OPCODE VALUE 1 VALUE 2 ALU R
OPCODE VALUE 1 VALUE 2 ALU REGISTER (8 BIT) 1
58
OPCODE VALUE 1 VALUE 2 ALU REGISTER FILE OUTPUT REG
1 59
OPCODE INPUT REG 1 INPUT REG 2 REGISTER FILE OUTPUT
REG ALU 0 0 1 60
61 OPCODE INPUT REG 1 INPUT REG 2 OUTPUT REG
62 INSTRUCTION REGISTER OPCODE INPUT REG 1 INPUT REG 2
OUTPUT REG
63 MEMORY INSTRUCTION REGISTER OPCODE INPUT REG 1 INPUT REG
2 OUTPUT REG
MEMORY INSTRUCTION REGISTER OPCODE INPUT REG 1 INPUT REG 2
OUTPUT REG 0 64
65 INSTRUCTION POINTER REGISTER MEMORY INSTRUCTION REGISTER OPCODE INPUT REG
1 INPUT REG 2 OUTPUT REG
66 INSTRUCTION POINTER REGISTER MEMORY INSTRUCTION REGISTER ADD 4 OPCODE
INPUT REG 1 INPUT REG 2 OUTPUT REG
Now we have the hardware for a programmable computer, and
we can forget the hardware. 67
68 0 3 0 2 Add register 0 and register
2, and store result in register 3: OPCODE INPUT REG 1 OUTPUT REG INPUT REG 2
69 “add r3 r0 r2” Add register 0 and register
2, and store result in register 3:
70 “add r3 r0 r2” 0 3 0 2 assembly
language machine code assembler
16 0 0 12 127 56 16 1 0 3
224 211 18 1 0 0 0 0 7 32 15 2 1 19 1 0 1 15 0 2 6 12 14 0 255 0 71
li r0, 819000 li r1, 254163 cmpi r1, 0 jeq
@end mov r2, r1 mod r1, r0, r1 mov r0, r2 jmp @start prn r0 halt 72
73 cmp mod add sub mul div xor or and
shl shr not ARITHMETIC
74 j je jne jg jge jl jle cmp mod
add sub mul div xor or and shl shr not lw lh lb sw sh sb STACK FUNC SPECIAL call ret push pop prn halt BRANCHING ARITHMETIC mov li MEMORY REG
DEMO 75
github.com/ddfreyne/rcpu 76
77
78 slack @denis / mail
[email protected]
Denis Defreyne Ask me
about Belgian beer.