アセンブリプログラミングの原則を詳細に扱い、ターゲットアーキテクチャとしてx86を使用しないテキストを探しています。そのような最近の本は見つかりませんでしたが、アプリケーション全体がまだアセンブリで書かれていた1970年代と1980年代に書かれた良い本がいくつかあったと思います。使用されるアーキテクチャも、6502やVAXなどのよりクリーンな設計の1つである必要があります。
11 に答える
Knuths Computer Programmingの技術は、架空のアセンブリ言語であるMIXまたはMMIXの例を提供します。
Art of Computer Programming(それが終わったとき)はかなり徹底的になります!
また、6809 および 68000 チップ セット アセンブリを見て、当時アセンブラでプログラムした内容に基づいた「よりクリーンな設計」を検討します。
さらに言えば、IBM 360/670 のアセンブラー セットは非常に簡単にコーディングできることがわかりました。特定のテキスト - レジスター管理などのかなり良い基礎を身につけたい場合は、そのための古いテキストブックを探してください。おそらくどこかの棚にあるので、機会があればほこりっぽいコーナーを探します.
理由はわかりませんが、古い Xerox PC の Z80 が好きではありませんでした。何らかの理由で苦痛でした。
古典的な本ではありませんが (もともとは 90 年代に出版されました)、MIPS asm はPatterson と Hennessy によるComputer Organization and Design: The Hardware/Software Interface (ISBN: 0123706068) から学びました。この本は厳密には組み立てに関するものではありません。コンピューター アーキテクチャの教科書です。しかし、MIPS はかなりクリーンなアーキテクチャです。
クラシックを求めているのなら、おそらく作品にかなり深く入ったものを探していると思います.
私はこの本を学校で使いました。モトローラ68000用でした。
また、無料のARMアセンブリプログラミングの本をオンラインで見つけました。
まだ印刷されているとは思えませんが、1977年に大学で始めたCSクラスでは、SeymourCrayのアーキテクチャの1つであるCDCCyberを使用していました。(Holy Moly! Amazonにあります!)実際にはかなりまともなアセンブリ言語です。これには、マクロのようなマイクロと呼ばれる独自の機能が含まれていましたが、約3行のソースでシンボルlabel1
を作成するなどの文字列のトリックに対してより柔軟です。label999
実際、当時、アプリケーション全体は一般的にアセンブリで記述されていませんでした。私はそれがテキストエディタであることを知っていました、そしてオペレーティングシステムのかなりの部分は確かにそうでしたが、アプリケーションはほとんどありませんでした。
それを超えて、私は良いアセンブリ言語の本があったことを思い出しません。しかし、2番目のCSクラスが新しいモトローラ6800を使用していたため、私の露出は制限されていました。これは、アドホックなメモのコレクションによって文書化されました。後年、Unix v6でCを使用しましたが、アセンブリを作成する必要はありませんでした。特にカーネル読み取りクラスの場合、PDP-11アセンブリ言語を読み取って理解するのに役立つ演習はわずかでしたが、カーネルはで書かれましたC
。
そのすべての露出の後、私は、iNtelプロセッサを除いて、製造元のプロセッサアーキテクチャリファレンスとアセンブラ以上のものを必要とすることはめったにない十分なCPUとアセンブラを知っていました。大きな課題は、一連のアセンブラマクロで完全に構成されたDECのRSXスレッドコンパイラ出力言語でした。しかし、Texas Instruments 9900、Motorola 68000および68010、Z80、6502、VAX 750、TMS 16016/32032など、ほとんどのプロセッサは理解とプログラミングが簡単でした。
iNtelファミリのプロセッサは、8086ファミリと8047/8052ファミリの両方で、非常に手に入れるのが困難でした。非常に非直交で、奇妙なモードがロードされています:なぜ直接交換できるのに、交換できないAX
のですか?特に80386が発売された後、プロテクトモードでセグメントレジスタをロードすると、クロックサイクルに大きなペナルティが発生しました。次に、奇妙なセグメント制御の疑似命令、セグメントクラス、およびコードロケーター(リンク後のオブジェクトコードの後処理)がありました。奇妙で不器用なツールがたくさん。BX
DS
ES
AtmelAVRシリーズなどの人気のあるマイクロコントローラーをチェックしてください。これは、アセンブラプログラミングが依然としてホットなトピックであるところです。そのようなデバイスをプログラムする方法を教える本がたくさんあり、また、いくつかの本当にクールなガジェットを構築できるようにするプロトタイピングシステムもあります。
Atmel AVRマイクロコントローラーは、ARMプロセッサーと同様にクリーンなアーキテクチャーを備えています。MicrochipPICデバイスはページメモリを使用するため避けてください。線形アドレス空間を備えたマイクロコントローラーが必要です。
TI の msp430 は非常に優れたアーキテクチャで、初めて見たときに pdp11 を思い出しました。本に関して言えば、私が本を書き始めたが、決して完成しなかったことを私は知りません...とにかくあなたが探していたようなものではないでしょう.
1970年代と1980年代のプロセッサに関する本の市場は小さかったと思います。そして、もしあれば、メーカーのドキュメントしか見つかりません。
そのほとんどが埋め立て地になってしまったと思いますが、愛好家によって救われたものもあるかもしれません。
Motorola、MOS Technology、DigitalEquipmentCorporationなどからPDF形式のアーカイブ資料を検索する価値があるかもしれません。
Alexander Stepanov は、彼のノートの講義 1 で、「構造化された」アセンブリ プログラミングの考え方への転換について語っています。このアイデアをフォローアップしたいので、「Foo での構造化アセンブリ プログラミング」のようなタイトルの本を探しました。しかし、私が見つけたのは、プログラム設計の原則ではなく、一部のプロセッサ アーキテクチャを対象としていることが判明したことです。ここでの他の回答で言及されている本のほとんどは、それと一致しています。
私は Knuth の AoCP を見てきましたが、確かに詳細で、MMIXAL を使用しています。しかし、v. 1 のちょっとしたことは別として、ch. 1.4、それはプログラムの設計ではなく、アルゴリズムの設計に関するものです。つまり、それは本当にCormenなどのようなカテゴリーにあります. アル。「アルゴリズム入門」。
だから、私が探していたようなものは何もないのかもしれません。