Entry

今読んでる本 - 『x86アセンブラ入門』

2008年07月26日

正確には読み直しなんですけど,今読んでます。

x86アセンブラ入門―PC/ATなどで使われている80x86のアセンブラを習得 (TECHI―Processor)
x86アセンブラ入門
posted with amazlet at 08.07.26
大貫 広幸
CQ出版
売り上げランキング: 60490

これまで TRY!PC 2003年冬号の『アセンブラがわかればハードがわかる』を使ってたんですけど,いいかげんに情報が古くなっているもんで,買い直すことにしました。本書は,『アセンブラが分かれば……』に加筆修正して,書籍の体裁にしたものです。

今どき,アセンブラを使ってプログラミングしなくちゃいけないときってのはあまりなくて,低水準言語といっても,せいぜい C/C++ にとどまっていたりします。それで十分パフォーマンスが出るから,問題はないんですけどね。けど,CPU が Pentium4 になって,SSE2 命令セットなんかが搭載されるようになったにもかかわらず,C/C++ ではこれらの命令を使うことはできません。128bit のレジスタを1回の命令で演算できるってのに,これらの命令を使わずに,汎用命令/レジスタを使ってチマチマやるんなんて,なんとも損な話です。

個人的には,ちょうど浮動小数点数演算を高速化したいといった話があるもんで,どうせならということで,買い直すことにしたのでした。これまで SSE を使ってゴニョゴニョやってたんですけど,SSE は単精度の浮動小数点数(C でいう float 型)を扱えるものの,倍精度(C でいう double 型)の演算はできません。また,SSE 命令セットでは,レジスタが FPU と共有されていたこともあって,レジスタの切り替えに微妙に時間がかかっていました。(追記:これは MMX の話でしたね。勘違い。)SSE2 はここら辺の話をうまく解決してくれているので,ちょっと期待しています。

『アセンブラが分かれば……』では,MASM 6.14 と gas 2.10.90 を使っていたので,SSE2 命令を使えなかったんですけど(触れる程度だった),本書ではアセンブラもバージョンアップしていて,割と詳しく SSE2 命令について説明されています。ちなみに,SSE3/SSE4 については説明がないんですけど,これはあたしの母艦(Pentium4 Northwood 1.6AGHz)も対応していないので問題なしです(※SSE3 は Pentium4 Prescott 以降,SSE4 は Core2 Penryn 以降に搭載されている)。それでいいのかって話はあるんですけど……。

一方,本書は「アセンブラ入門」と題してはいるんですけれど,手取り足取り教えてくれるような入門書じゃありません。ある程度アセンブリの概要を知っているけれど,x86系のアセンブリは初めてという人向けの,リファレンス本といった感じです。「アセンブラ入門」ではなく,あくまでも「x86アセンブラ入門」。

アセンブリ界隈では,どうしても,いきなり「CPU の仕様書嫁!」みたいな話になりがちなもんで,まったく知らない人には敷居が高かったりします。また,親切に説明している他書(入門書)にしてみても,MASM 派と gas 派に分かれがちで,入門書の段階で,どちらかの流派を選ばないといけない,といった不便があったりします。

本書では,CPU の仕様についても8086系 CPU の概要を必要な範囲で説明していますし,MASM のコードと gas のコードを両方掲載していて,大変親切です。こゆのは執筆者さんがかなり頑張らないとできないことなんだと思います。価格も良心的ですし,これからx86系のアセンブリを始めたいという向きにはオススメです。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN