Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
今から始める8bits CPU アセンブラ言語
Search
sapi_kawahara
March 10, 2025
Education
0
360
今から始める8bits CPU アセンブラ言語
sapi_kawahara
March 10, 2025
Tweet
Share
More Decks by sapi_kawahara
See All by sapi_kawahara
執筆テーマの決め方
sapi_kawahara
1
330
LTの禁じ手
sapi_kawahara
1
1.1k
||とorの違いは登壇して解決した
sapi_kawahara
0
330
Macintosh talk / Macintoshの話
sapi_kawahara
0
180
混合接種してみた / Mixed inoculation
sapi_kawahara
0
130
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
380
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
430
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
440
推し技術の紹介 / Introduction of pushing technology
sapi_kawahara
0
190
Other Decks in Education
See All in Education
Data Physicalisation - Lecture 9 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
380
環境・社会理工学院 建築学系 大学院入試について|Science Tokyo(東京科学大学)
sciencetokyo
PRO
0
1k
Ch4_-_Cours_1.pdf
bernhardsvt
0
200
Training Alchemy: Converting ordinary training into memorable experiences
tmiket
1
120
女子商アプリ開発の軌跡
asial_edu
0
360
より良い学振申請書(DC)を作ろう 2025
luiyoshida
1
2.7k
Web からのデータ収集と探究事例の紹介 / no94_jsai_seminar
upura
0
230
Gesture-based Interaction - Lecture 6 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
1.6k
系統性を意識したプログラミング教育~ガチャを実装しよう~
asial_edu
0
370
IMU-00 Pi
kanaya
0
320
Why Did Douglass Change His Mind?
oripsolob
0
480
Interactive Tabletops and Surfaces - Lecture 5 - Next Generation User Interfaces (4018166FNR)
signer
PRO
1
1.6k
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Build your cross-platform service in a week with App Engine
jlugia
230
18k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
The Language of Interfaces
destraynor
157
25k
Why Our Code Smells
bkeepers
PRO
336
57k
4 Signs Your Business is Dying
shpigford
183
22k
Raft: Consensus for Rubyists
vanstee
137
6.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Designing for Performance
lara
608
69k
Six Lessons from altMBA
skipperchong
28
3.7k
Transcript
今から始める8bits CPU アセンブラ言語 さっぴー川原 @sapi_kawahara
自己紹介 • さっぴー川原 @sapi_kawahara • アラ還 • 埼玉県川越市在中 • 経験した代表的な開発言語:Python,PHP,Ruby,C言
語,C++,Perl,Go,Java,JavaScript,Kotlin(1月から始めまし た),Bash,AWK,SQL,HTML,BASIC,アセンブラ言語 • 経験したアセンブラ言語 :6502,65816,GB80,HuC62,68000,SuperH,R3000 元ゲームエンジニア です!
今から始めると言っても
LTの時間では
無理っす!!
だから アセンブラ言語って 何だ?って
今回は基本中の基本 2つの基本について簡単に説明します
1つ目 命令数
アセンブラ言語は 「CPUが動くための命令を 人間が判りやすい言葉に置き換えた言語」
だから Classもない Instanceもない それこそMethodもない
あるのは以下の6つ • メモリーからの読み込み • メモリーへの書き込み • 計算(一部のCPUは加算減算のみ) • 判定(フラグ評価) •
フラグによるジャンプ • 何もしない
これだけでゲームソフトを開発してました🤩
逆にやることが少ないし 命令によっては 実行速度が異なるので
これを 人間オプティマイズ と呼びます!
人が高速になるように プログラミングしておりました
そんなソースコード とてもじゃないけど 読めたもんじゃない!
私も 3ヶ月前のソースコードが 読めませんでした!
これが「職人のタレ」です!
2つ目Endian
職人と呼ばれた人たちは 強い思想を持っています
アセンブラ言語においては 80系と68系の論争が 絶え間なく続いていました
なお、川原は68系を信仰してます
80系と68系で大きく異なる点 それはEndianです
Endianはデータ格納順序のことです
コンピューターは 1Byteごとメモリーに格納します
最大値は256です
じゃあ 256以上の数値を表すには?
2Bytes使えばいいんです!
では どのように格納します?
80系 下位アドレスに下位バイト 上位アドレスに上位バイト これがLittle Endian 下位バイト 上位バイト 下位アドレス 上位アドレス
68系 下位アドレスに上位バイト 上位アドレスに下位バイト これがBig Endian 上位バイト 上位バイト 下位アドレス 上位アドレス
Endianの影響は Little EndianとBig Endianの 解釈を間違えて 上位と下位を入れ替えてしまうと 別の値になることです
ぶっちゃけ言うと そんなに影響は無かった
理由は単純で 弊害が起こるのは CPU以外とのやり取りになりますが
ゲーム機は CPUに合わせた 周辺デバイスを作るので 80系デバイスはLittle Endian 68系デバイスはBig Endian このように設計されています
ただし! FM音源や PCM音源は Little Endianで設計されてます
スーパーファミコンのCPUは Little Endianなので PCM音源もLittle Endian
しかし! メガドライブのCPUは68000でBig Endian FM音源はLittle Endian だから サブCPUにLittle EndianであるZ80が 搭載されていた!
まとめ • この2つを把握したら、あなたもアセンブラ言語通です!! • アセンブラ言語の命令の種類は6つ ◦ それだけでゲームを動かしていた ◦ 少ない命令においては、職人と呼ばれる人が居た ◦
それがいつしか「職人のタレ」と呼ばれるようになった • 80系と68系は戦っていた ◦ 戦いの理由はEndian ◦ 大した差は無いけど、強い思想なので相容れない ◦ FM音源やPCM音源はLittle Endianなので、Big EndianのCPUではひと 工夫が必要
尺オーバーなので 以降は削除
CPUの説明
R3000 • プレイステーションなどに使用されていたCPU • ミップス社が開発した32bits CPU • なぜ、プレイステーションで使用されたか?たぶん、ソニーの ワークステーションNEWSで使用されていたからだと推測され ます
https://ja.wikipedia.org/wiki/NEWS_(%E3%82%BD%E3%8 3%8B%E3%83%BC)より画像を引用
SuperH • セガサターンなどで使用されたCPU • 日立製作所が開発した32bits CPU • もともと日立製作所は68000系のCPUを、モトローラ社からセ カンドライセンスとして作っていたが関係悪化したので、 68000に似たCPUを作ろうとした、それがSuperHだった
• ゲームセンターで稼働しているゲームにもSuperHを使用して いることが多く、セガサターンに搭載されるのは自然の成り行 きだったのかも?
65816 • スーパーファミコンで使用されたCPU • ウェスタンデザインセンターが開発した16bits CPU • 6502と互換性を持っていたため、ファミリーコンピューター の後釜として採用された?
HuC62 • PCエンジンで使用されたCPU • セイコーエプソンが開発した8bits CPU • 6502のパクリと互換性を持たせるためにハドソンが設計した
GB80 • ゲームボーイで使用されたCPU • 正式名称は「LR35902」で、シャープが開発した8bits CPU • Z80のパクリと互換性を持たせるためシャープが作ったが、液 晶デバイスと組み込みとして任天堂に売り込んだという噂があ る
• そのためファミコン開発者には不評だった80系CPU
6502 • ファミリーコンピューターで使用されたCPU • モステクノロジーが開発した8bits CPU • 世界的大ヒットしたパソコン、Apple 2で使用してたCPUなの で、その辺りの開発者を取り込もうとしたのか?と言われてい
る • 6502は6800というCPUに似ていて、俗にいう68系CPUと呼 ばれていて、ゲーム開発者には人気のCPUでした https://ja.wikipedia.org/wiki/Apple_II より画像を引用
Endian小ネタ • アーケードゲームでは、音源チップが変わることが多く、そのたび に設計し直すのが面倒だから、汎用的なZ80を挟んだと、先輩から 聞いたことがあります ◦ FPGA(Field Programmable Gate Array)の代替だったのかな?と思っていま
す • 通信系はBig Endianです • スーファミのサテラビューもBig Endianでした ◦ 通信衛星から色々な情報が取得できました • ゲームボーイの通信は1Byteなので、どっちのEndianでもありませ ん ◦ むしろゲームボーイの通信の難しさは半二重通信であることに尽きる
Otomatik - 104.22.39.239
CloudFlare DNS
Türk Telekom DNS
Google DNS
Open DNS
OSZAR »