締切に助けてもらいながら積読書を消化する読書会:デッドライン読書会の第45回は、過去3回に引き続き「パタヘネ」こと「コンピュータの構成と設計」でした。今回が下巻の後半となり、最終回です。
今回の範囲
今回の範囲は下巻の後半で、付録に当たる部分です。
- A. アセンブラ、リンカ、SPIMシミュレータ
- B. 論理設計の基礎
感想
A.アセンブラ、リンカ、SPIMシミュレータ
付録ということもありAもBもネタは様々なでした。Aの前半はアセンブリ言語とアセンブリ言語を実行するまでの手順の解説でした。アセンブリ言語→アセンブラ→リンカ→ロード。後半はSPIMと、MIPS R2000のアセンブリ言語解説(これはさすがに読まなかった…)。
Aの冒頭で「0から100までの整数の2乗和を計算して出力するルーチン」を題材に、MIPS機械語コード(1と0の羅列!)、アセンブリ言語コード(ラベル無しバージョン、有りバージョン)、Cのコードを並べている箇所があった。これは新鮮。MIPS機械語コードが読めないのは当たり前ですが、アセンブリ言語も書かれているだけでは全く意味がわかりませんね…。Cがパット見わかるのはさすが高水準言語感があります。何を今更って気もしますが、純粋な感想。
それでもアセンブリ言語を使うシーンは世の中にもまだ存在するらしいですね。コンパイラによって生成された命令が実行時間の面において不確定要素を含む可能性があり、それが致命的となるようなシチュエーションにおいては人によってアセンブリ言語を実装しているようです。しかし現実的には、コンパイラの高度化、複数同時命令を実行できる高速なプロセッサの出現、アプリケーションの複雑性の増大から、高水準言語がより活用されるようになっているとのこと。
もう一つ、SPIM。斜め読みしたときにMIPSのシミュレータらしいけど、なんの略語?と結構調べてしまった。MIPSを逆から読んだだけとのこと。(普通に本書に書いてあったので、普通に読めばよかっただけ)。学習用途や研究用途で利用できるシミュレータであり、Windows PC等にもインストールして利用できる。ためしにQtSpimというツールをインストールして試してみました。1から5までの2乗和を出力するルーチンです。
.text
.align 2
.globl main
main:
subu $sp, $sp, 32
sw $ra, 20($sp)
sw $a0, 32($sp)
sw $a1, 36($sp)
sw $zero, 24($sp)
sw $zero, 28($sp)
loop:
lw $t6, 28($sp)
mul $t7, $t6, $t6
lw $t8, 24($sp)
addu $t9, $t8, $t7
sw $t9, 24($sp)
addu $t0, $t6, 1
sw $t0, 28($sp)
ble $t0, 5, loop
la $t0, str
lw $a1, 24($sp)
jal printf
move $v0, $zero
lw $ra, 20($sp)
addu $sp, $sp, 32
jr $ra
.data
.align 0
str:
.asciiz "The sum from 0...100 is %d\n"
.extern foobar 4
QtSpimでは1行ごとにデバッグができ、レジスタの値の変化を見ることができる。
B. 論理設計の基礎
付録の後半は「論理設計の基礎」がテーマ。論理式、ALU、メモリ、SRAM/DRAM、FPGの話。気になった点をピックアップ。
B.4ではハードウェア記述言語について解説。Verilog。名前は聞いた覚えがあるけど…程度。wire(ワイヤ)とreg(レジスタ)の2つの主要なデータ型を利用してハードウェア設計をシミュレートしたり、デバッグしたりできるもの。本書の特典(読みきれないインターネットコンテンツ)では、Verilogを使ってプロセッサの実装方式を記述してありました。がっつりと。もしこれ学生の頃にしっかり読めって言われたら、だいぶ苦しんでいるな…(今回は「うっ…」とうめいたあとにPDFをそっと閉じました)。ちなみに、本書の特典コンテンツは普通に書籍と同じフォーマットで書かれている立派な特典です。
まとめ
4回にわたってパタヘネを読みました!一人だとずっと(バーチャルで)積読だったであろう本書を、購入して手に取り、週に数回開いて読み進められたのはとても良かったです。内容をしっかり抑えられたなんてはとても言えないですが、インデックスははれた感じ。良い機会でした。
Next ??
いつもロストしてしまうデッドライン読書会の積読リスト。
- マスターアルゴリズム
- ビルゲイツ推薦
- NO FLOP 失敗できない人の失敗しない技術
- 中山ところてんさん推薦
- デジタルトランスフォーメーションジャーニー
- INSPIRED 2版
- システム運用アンチパターン
- 実践ソフトウェアエンジニアリング(第9版)
- 来年あたりには…
- 心理的安全性とアジャイル
- 読みたいけど、Tech系を優先か
- Project Management進化論 クリティカルチェーン・プロジェクトマネジメント
- 本書というよりか良いCCPMの本があったら読みたい
- Web世代が知らないエンタープライズシステム設計
コメント