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
780
今から始める8bits CPU アセンブラ言語
sapi_kawahara
March 10, 2025
Tweet
Share
More Decks by sapi_kawahara
See All by sapi_kawahara
執筆テーマの決め方
sapi_kawahara
1
370
LTの禁じ手
sapi_kawahara
1
1.2k
||とorの違いは登壇して解決した
sapi_kawahara
0
360
Macintosh talk / Macintoshの話
sapi_kawahara
0
200
混合接種してみた / Mixed inoculation
sapi_kawahara
0
150
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
410
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
460
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
470
推し技術の紹介 / Introduction of pushing technology
sapi_kawahara
0
210
Other Decks in Education
See All in Education
QR-koodit opetuksessa
matleenalaakso
0
1.7k
Présentation_2nde_2025.pdf
bernhardsvt
0
290
Master of Applied Science & Engineering: Computer Science & Master of Science in Applied Informatics: Artificial Intelligence and Data Science
signer
PRO
0
840
The knowledge panel is your new homepage
bradwetherall
0
200
1021
cbtlibrary
0
350
DIP_1_Introduction
hachama
0
280
AI for Learning
fonylew
0
200
ハッカソンを活用したモノづくり教育について
yusk1450
PRO
2
120
中央教育審議会 教育課程企画特別部会 情報・技術ワーキンググループに向けた提言 ー次期学習指導要領での情報活用能力の抜本的向上に向けてー
codeforeveryone
0
370
1014
cbtlibrary
0
480
Google Gemini (Gem) の育成方法
mickey_kubo
2
280
IKIGAI World Fes:program
tsutsumi
1
2.4k
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
57k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Measuring & Analyzing Core Web Vitals
bluesmoon
9
650
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Balancing Empowerment & Direction
lara
5
710
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Speed Design
sergeychernyshev
32
1.2k
Into the Great Unknown - MozCon
thekraken
40
2.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.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でもありませ ん ◦ むしろゲームボーイの通信の難しさは半二重通信であることに尽きる