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
490
今から始める8bits CPU アセンブラ言語
sapi_kawahara
March 10, 2025
Tweet
Share
More Decks by sapi_kawahara
See All by sapi_kawahara
執筆テーマの決め方
sapi_kawahara
1
350
LTの禁じ手
sapi_kawahara
1
1.2k
||とorの違いは登壇して解決した
sapi_kawahara
0
340
Macintosh talk / Macintoshの話
sapi_kawahara
0
190
混合接種してみた / Mixed inoculation
sapi_kawahara
0
150
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
400
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
440
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
450
推し技術の紹介 / Introduction of pushing technology
sapi_kawahara
0
200
Other Decks in Education
See All in Education
Linuxのよく使うコマンドを解説
mickey_kubo
1
150
Are puppies a ranking factor?
jonoalderson
0
860
諸外国の理科カリキュラムにおけるビッグアイデアの構造比較
arumakan
0
330
Gamified Interventions for Composting Behavior: A Case Study Using the Gamiflow Framework in a Workplace Setting
ezefranca
1
140
2025/06/05_読み漁り学習
nag8
0
150
技術文章を書くための執筆技術と実践法(パラグラフライティング)
hisashiishihara
18
6.5k
20250625_なんでもCopilot 一年の振り返り
ponponmikankan
0
230
AIの時代こそ、考える知的学習術
yum3
2
170
より良い学振申請書(DC)を作ろう 2025
luiyoshida
1
3.3k
ThingLink
matleenalaakso
28
4.1k
CHARMS-HP-Banner
weltraumreisende
0
230
20250611_なんでもCopilot1年続いたぞ~
ponponmikankan
0
100
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.4k
Building Applications with DynamoDB
mza
95
6.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
A Tale of Four Properties
chriscoyier
160
23k
Embracing the Ebb and Flow
colly
86
4.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Become a Pro
speakerdeck
PRO
29
5.4k
A better future with KSS
kneath
238
17k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
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でもありませ ん ◦ むしろゲームボーイの通信の難しさは半二重通信であることに尽きる