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
520
今から始める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
450
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
460
推し技術の紹介 / Introduction of pushing technology
sapi_kawahara
0
200
Other Decks in Education
See All in Education
Constructing a Custom TeX Ecosystem for Educational Institutions—Beyond Academic Typesetting
doratex
1
14k
2025年度春学期 統計学 第2回 統計資料の収集と読み方(講義後配付用) (2025. 4. 17)
akiraasano
PRO
0
110
技術文章を書くための執筆技術と実践法(パラグラフライティング)
hisashiishihara
19
6.6k
OJTに夢を見すぎていませんか? ロールプレイ研修の試行錯誤/tryanderror-in-roleplaying-training
takipone
1
180
理想の英語力に一直線!最高効率な英語学習のすゝめ
logica0419
6
300
サンキッズゾーン 春日井駅前 ご案内
sanyohomes
0
580
America and the World
oripsolob
0
520
今も熱いもの!魂を揺さぶる戦士の儀式:マオリ族のハカ
shubox
0
220
推しのコミュニティはなんぼあってもいい / Let's join a lot of communities.
kaga
2
1.8k
登壇未経験者のための登壇戦略~LTは設計が9割!!!~
masakiokuda
3
590
生成AIとの上手な付き合い方【公開版】/ How to Get Along Well with Generative AI (Public Version)
handlename
0
540
American Airlines® USA Contact Numbers: The Ultimate 2025 Guide
lievliev
0
240
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
How STYLIGHT went responsive
nonsquared
100
5.7k
Fireside Chat
paigeccino
37
3.5k
A designer walks into a library…
pauljervisheath
207
24k
Become a Pro
speakerdeck
PRO
29
5.4k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
The Cost Of JavaScript in 2023
addyosmani
51
8.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
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でもありませ ん ◦ むしろゲームボーイの通信の難しさは半二重通信であることに尽きる