書籍一覧

 

The Basic Assembler 入門編

The Basic Assembler 入門編

x64アーキテクチャーの初めの一歩を学んでから、円周率πを高速・高精度で計算するオール・アセンブラのプログラム作成にチャレンジします。

プログラミングの基本を説明するためにプログラミング言語Pythonを使用することにしました。

Pythonで作成した円周率計算プログラムを、同じアルゴリズムのまま64ビットアセンブラで作成します。

  • 第1章:4月に公開されたVisual Studio 2019をインストールして64ビットアセンブラの初歩を解説
  • 第2章:x64アーキテクチャへ至る道を、インテル社が如何に互換性を重視したかを説明します。また。過去のCPUから現在のCPUへの激しい進歩の状況を図で表現
  • 第3章:円周率を求める計算方法を簡単なものから本格的なものまで、Pythonを使って説明。科学技術計算の拡張モジュールを使いPython単独でも高速な計算が実現できるため、その作成方法も解説
  • 4章:オールアセンブラによる円周率計算プログラムの作成にチャレンジ。開発ツールは、NASMとPolinkという高性能なフリーのソフトウェアを使用

作成したプログラムは、多くのユーザ-の環境である 64ビット版Windows10で動作できます。

初出:技術書典6

The Advanced Assembler 上ノ巻

The Advanced Assembler 386 上の巻

1993 年~1994 年にかけて The BASIC誌(「ざべ」)に連載していた Advanced Assembler 386 (上ノ巻1~5回/全10回)を現代風アレンジ

  • 現在までのIntel CPU変遷記
  • イラスト書き換え
  • レイアウトを全面的に再構成 を加えて、同人誌として復刻

マニアックな記事の多かった「ざべ」誌の中では異色の王道技術解説記事である Advanced Assembler 386 は、x86アーキテクチャの基礎テクノロジーである7つの壁(上ノ巻は3つの壁まで)を詳しく解説しており、その技術は現在の最新 CPU を学ぶ上でも必須となっています。

上ノ巻 目次

  • はじめに
  • イントロダクション
  • Intel CPU の歩み
  • X86アーキテクチャの7つの壁
  • 第1回 拡張命令/アドレッシング 80386
  • 第2回 エクステンドメモリへのアクセス
  • 第3回 プロテクトモードにおける保護機能
  • 第4回 16ビットコードと32ビットコードの混在
  • 第5回 VCPI

初出:技術書典4

The Advanced Assembler 下ノ巻

The Advanced Assembler 386 下の巻

1993 年~1994 年にかけて The BASIC誌(「ざべ」)に連載していた Advanced Assembler 386 (下ノ巻6~10回/全10回)を現代風アレンジ

  • x64アーキテクチャの最新記事
  • 書き換え
  • レイアウトを全面的に再構成

を加えて、同人誌として復刻。

マニアックな記事の多かった「ざべ」誌の中では異色の王道技術解説記事である Advanced Assembler 386 は、x86アーキテクチャの基礎テクノロジーである7つの壁(下ノ巻は3つの壁)を詳しく解説しており、その技術は現在の最新 CPU を学ぶ上でも必須となっています。

下ノ巻 目次

  • はじめに
  • 第6回 タスクスイッチ
  • 第7回 割り込み&例外
  • 第8回 仮想86 モード
  • 第9回 ページング
  • 第10回 キャッシュメモリシステム
  • 新章 x86 64 ビットアーキテクチャー

初出:コミケ94

めざせ4004! IC34個のCPUでリバーシ作ってみた

めざせ4004! IC34個のCPUでリバーシ作ってみた

自作4bit CPUのALUに74181を採用し大幅な演算機能強化を図ったバージョンです。17種49個の命令を備えています。

Intel 4004よりも豊富な演算命令を使えるためプログラミングの自由度が大幅に向上し、効率的な電卓プログラムを作れるようになりました。

  • 名称:EX4-2026
  • ビット幅:4bit
  • 命令形式:1命令2バイト (固定長)
  • プログラム記憶領域:4KB
  • データ記憶領域:最大256語 (1語4bit)
  • 演算機能:ADD、ADC、INC、SUB、SBC、DEC、CMP、AND、OR、XOR、ADJ
  • 使用IC数:34個
  • クロック周波数:DC~1kHz

今回はさらに、このCPUを使って人間 vs CPU対戦が可能なリバーシ(オセロ)を作成しました。

更に8×8の2色カラーLEDによるオセロ盤を追加しました。LEDの点灯制御にIntel 8279を使っている点も面白いと思います。

初出:コミケ108

内容一覧

めざせ4004! IC24個で電卓用CPUを作ってみた

めざせ4004! IC24個で電卓用CPUを作ってみた

本書はわずか24個の汎用ロジックICだけで作った電卓用CPUを作成します。

これは4004と同等のROMとRAMを備え、電卓を作成するのに必要なギリギリ最小限度の機能を持っています。実際に本書の後半では7桁の四則演算が可能な整数電卓を作ります。

  • 名称:EX4-2024
  • ビット幅:4bit
  • 命令形式:1命令2バイト (固定長)
  • プログラム記憶領域:4KB
  • データ記憶領域:最大256語 (1語4bit)
  • 演算機能:加算・減算
  • 使用IC数:24個
  • クロック周波数:DC~1kHz

TD4-2024は機能的にはIntel 4004に遥かに劣るものの、電卓を実現しているという意味では4004と同じ土俵に上れています。プログラム次第では141-PFと同等の電卓も作成できます。

初出:技術書典16

内容準備中

あなたCPUなんか創ってどうするのかしら?!

あなたCPUなんか創ってどうするのかしら?!

本書はTD4というCPUを拡張し、電卓を作成できるCPUを作り上げようというプロジェクトの第4弾です。

筆者がこれまでに制作したCPUからの改良点は減算命令を搭載したという点です。これによりプログラム次第で加減乗除を実現できるようになりました。本書の後半では実際に2桁の電卓を制作しています。

  • 名称:TD4EX4
  • ビット幅:4bit
  • 命令形式:1命令1~2バイト (可変長)
  • プログラム記憶領域:4KB
  • データ記憶領域:最大16語 (1語4bit)
  • 演算機能:加算・減算
  • 使用IC数:16個
  • クロック周波数:DC~1kHz

TD4EX4は純粋なCPUなので入出力などの機能が全くありません。実際に電卓を作成するためにI/Oユニットが必要となります。もちろん電源も必要です。

CPUに16個、I/Oに8個、CLOCKに2個の合計28個のICを使用しています。ブレッドボードで作成ましたので見た目は酷いものですが、きちんと動作します。

初出:技術書典6

内容公開中

関連動画

この世のCPUを食べ尽くすのだ!

この世のCPUを食べ尽くすのだ!

本書はTD4というCPUを拡張し、電卓を作ろうというプロジェクトの第3弾です。

今回はRAMを追加し、さらに電卓用の入出力回路(テンキーと7セグメントLED)も追加します。

  • 名称:TD4EX3
  • ビット幅:4bit
  • 命令形式:1命令1~2バイト (可変長)
  • プログラム記憶領域:4KB
  • データ記憶領域:最大16語 (1語4bit)
  • 演算機能:イミディエイト・データとの加算のみ
  • 使用IC数:16個
  • クロック周波数:DC~1kHz

初出:技術書典5

内容公開中

関連動画

ええっ?! CPU創ったの⁈ すっごーい!

ええっ?! CPU創ったの⁈ すっごーい!

TD4というCPUを拡張しレジスタ間加算を実現しました。

  • 名称:TD4EX1
  • ビット幅:4bit
  • 命令形式:1命令1バイト
  • プログラム記憶領域 (ROM):16Byte
  • データ記憶領域 (RAM):なし
  • 演算機能:レジスタ間加算
  • 使用IC数:11個
  • クロック周波数:DC~1kHz

初出:コミケ92

内容公開中

あんたCPUなんか創ってどうするのよ?!

あんたCPUなんか創ってどうするのよ?!

TD4というCPUを可変長命令化しROMを4KBに拡張しました。

  • 名称:TD4EX2
  • ビット幅:4bit
  • 命令形式:1命令1~2バイト (可変長)
  • プログラム記憶領域 (ROM):4KB
  • データ記憶領域 (RAM):なし
  • 演算機能:イミディエイト・データとの加算のみ
  • 使用IC数:14個
  • クロック周波数:DC~1kHz

初出:コミケ90

内容公開中