CINXE.COM

O'Reilly Japan - コンピュータシステムの理論と実装 第2版

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>O'Reilly Japan - コンピュータシステムの理論と実装 第2版</title> <link rel="stylesheet" type="text/css" href="/assets/css/font-face.css"> <link rel="stylesheet" type="text/css" href="/assets/css/layout.css"> <link rel="stylesheet" type="text/css" href="/assets/css/layout-books.css"> <link rel="icon" type="image/png" href="https://www.oreilly.com/favicon.ico"> <meta name="format-detection" content="telephone=no"> <meta property="og:title" content="コンピュータシステムの理論と実装 第2版" /> <meta property="og:type" content="article" /> <meta property="og:image" content="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0087-4.jpeg" /> <meta property="og:image:secure_url" content="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0087-4.jpeg" /> <meta property="og:url" content="https://www.oreilly.co.jp/books/9784814400874/" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="O'Reilly Japan" /> <meta name="twitter:creator" content="oreilly_japan" /> <link href="http://www.oreilly.co.jp/sales/atom.xml" type="application/atom+xml" rel="alternate" title="Sales Information" /> <meta property="og:description" content="コンピュータシステムをゼロから作って学ぶベストセラー書の改訂第2版。コンピュータを理解するための最善の方法はゼロからコンピュータを作ることです。コンピュータの構成要素は、ハードウェア、ソフトウェア、コンパイラ、OSに大別できます。本書では、これらコンピュータの構成要素をひとつずつ組み立てます。具体的には、NANDという電子素子からスタートし、論理ゲート、加算器、CPUを設計します。そして、アセンブラ、仮想マシン、コンパイラ、OSなどを実装しコンピュータを完成させて、最後にその上でアプリケーション(テトリスなど)を動作させます。" /> <link rel="canonical" href="https://www.oreilly.co.jp//books/9784814400874/" /> <link rel="amphtml" href="https://www.oreilly.co.jp//books/9784814400874/mobile.html"> <!-- Google Tag Manager --> <script>(function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-KR9JFVC');</script> <!-- End Google Tag Manager --> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-M7QE72H4KS"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'G-M7QE72H4KS'); </script> <style> .collapsible { background-color: white; border: 0; border-bottom: 1px solid rgb(246, 246, 246); margin: 0; padding: 0; cursor: pointer; width: 100%; text-align: left; outline: none; font-size: 1.5rem; font-weight: 700; line-height: 1.5em; } .collapsible:after { content: '\02795'; /* Unicode character for "plus" sign (+) */ font-size: 1.0rem; margin-left: 5px; float: right; } .collapsible-active:after { content: "\2796"; /* Unicode character for "minus" sign (-) */ } .collapsible:hover { box-shadow: 2px0 4px 8px rgb(0, 0, 0, .1); transition: box-shadow .2s; cursor: pointer; } .collapsible+section { padding: 0; margin-bottom: 30px; background-color: white; max-height: 0; overflow: hidden; transition: max-height 0.05s ease-out; } </style> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KR9JFVC" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div id="skipToMain" class="nav__SkipToMain"><a href="#maincontent">Skip to main content</a></div> <header role="banner" class="nav__GlboalHeader"> <div class="pageWidth"> <nav role="navigation" aria-label="site sections" class="nav__GlobalNav"> <a aria-current="page" title="Go to home page" class="nav__Logo" href="/"><img src="/assets/images/logo_oreilly_japan.svg" alt="O'Reilly logo"></a> <div class="nav__NavItems" id="nav__NavItems"> <div class="nav__NavGroup"> <a class="nav__Link" href="/blog/">Blog</a> <a class="nav__Link active" href="/catalog/">Books</a> <a class="nav__Link" href="/ebook/">Ebooks</a> <a class="nav__Link" href="/online-learning/">Learning platform</a> <a class="nav__Link" href="/order/">Order</a> <a class="nav__Link" href="/company/">About</a> </div> <div class="nav__CTA"> <a href="/ebook/cart" class="nav__Cart">Cart</a> </div> </div> <button id="nav__MobileBtn" aria-expanded="false" aria-controls="menuList" class="nav__MobileBtn"><span><span></span></span></button> </nav> </div> </header> <main id="maincontent"> <div class="pageWidth"> <h1 itemprop="name"> コンピュータシステムの理論と実装 第2版 </h1> <p class='sub_title'> ―モダンなコンピュータの作り方</p> <span itemprop="publisher" content="オライリー・ジャパン"></span> <div class="contributers"> <span itemprop="author"> Noam Nisan、Shimon Schocken 著、斎藤 康毅 訳 </span> </div> <section class="detail" itemscope itemtype="http://schema.org/Book"> <div class="detail-cover"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0087-4.jpeg" class="cover-photo" alt="[cover photo]" /> </div> <dl class="item-props"> <dt>TOPICS</dt> <dd> <a href="/books/sysad/"> System/Network </a> </dd> <dt>発行年月日</dt> <dd itemprop="datePublished" content="2024-12-02"> 2024年12月 </dd> <dt>PRINT LENGTH</dt> <dd itemprop="numberOfPages"> 472 </dd> <dt>ISBN</dt> <dd itemprop="isbn"> 978-4-8144-0087-4 </dd> <dt>原書</dt> <dd><a href="https://mitpress.mit.edu/9780262539807/the-elements-of-computing-systems/"> The Elements of Computing Systems, Second Edition </a></dd> <dt>FORMAT</dt> <dd> Print PDF EPUB <div class="buying-options"> <div class="option-item"> <div class="option-name">Print</div> <div> 4,400円 </div> <div class="link-book-order">書籍のご注文は<a href="https://www.ohmsha.co.jp/book/9784814400874/">オーム社サイト</a>へ </div> </div> </div> </dd> </dl> <div id="detail" class="content"> <p itemprop="description"> コンピュータシステムをゼロから作って学ぶベストセラー書の改訂第2版。コンピュータを理解するための最善の方法はゼロからコンピュータを作ることです。コンピュータの構成要素は、ハードウェア、ソフトウェア、コンパイラ、OSに大別できます。本書では、これらコンピュータの構成要素をひとつずつ組み立てます。具体的には、NANDという電子素子からスタートし、論理ゲート、加算器、CPUを設計します。そして、アセンブラ、仮想マシン、コンパイラ、OSなどを実装しコンピュータを完成させて、最後にその上でアプリケーション(テトリスなど)を動作させます。 </p> </div> <h2 class="collapsible">関連ファイル</h2> <section> <ul> <li><a href="https://www.nand2tetris.org"> 「Nand to Tetris」のWebサイト </a></li> <li><a href="https://www.nand2tetris.org/software"> ツールとプロジェクト </a></li> <li><a href="https://nand2tetris.github.io/web-ide"> Web IDE </a></li> <li><a href="https://github.com/oreilly-japan/the-elements-of-cs-2e-ja"> 日本語版のサポートサイト </a></li> </ul> </section> <h2 class="collapsible">目次</h2> <section> <div id="toc"> <pre>賞賛の声 訳者まえがき まえがき 第I部 ハードウェア I.1 Hello, World Below(こんにちは、低レイヤの世界) I.2 Nand to Tetris I.3 抽象化と実装 I.4 方法論 I.5 この先の展望 1章 ブール論理 1.1 ブール代数 1.2 論理ゲート 1.3 ハードウェアの構築 1.3.1 ハードウェア記述言語(HDL) 1.3.2 ハードウェアシミュレーション 1.4 仕様 1.4.1 Nandゲート 1.4.2 基本論理ゲート 1.4.3 複数ビットの基本ゲート 1.4.4 複数入力の基本ゲート 1.5 実装 1.5.1 動作シミュレーション 1.5.2 ハードウェア実装 1.5.3 ビルトインチップ 1.6 プロジェクト 1.7 展望 2章 ブール算術 2.1 算術演算 2.2 2進数 2.3 2進数の加算 2.4 符号付き2進数 2.5 仕様 2.5.1 加算器 2.5.2 ALU(算術論理演算器) 2.6 実装 2.7 プロジェクト 2.8 展望 3章 メモリ 3.1 メモリデバイス 3.2 順序回路 3.2.1 時間について 3.2.2 フリップフロップ 3.2.3 組み合わせ論理回路と順序論理回路 3.3 仕様 3.3.1 Dフリップフロップ 3.3.2 レジスタ 3.3.3 ランダムアクセスメモリ(RAM) 3.3.4 カウンタ 3.4 実装 3.4.1 Dフリップフロップ 3.4.2 レジスタ 3.4.3 RAM 3.4.4 カウンタ 3.5 プロジェクト 3.6 展望 4章 機械語 4.1 機械語の概要 4.1.1 ハードウェアの要素 4.1.2 アセンブリ言語 4.1.3 命令 4.2 Hack機械語 4.2.1 背景 4.2.2 プログラム例 4.2.3 Hack言語の仕様 4.2.4 シンボル 4.2.5 入出力操作 4.2.6 構文規則とファイル形式 4.3 Hackプログラミング 4.4 プロジェクト 4.5 展望 5章 コンピュータアーキテクチャ 5.1 コンピュータアーキテクチャの基礎 5.1.1 プログラム内蔵方式 5.1.2 ノイマン型アーキテクチャ 5.1.3 メモリ 5.1.4 CPU 5.1.5 入出力(I/O) 5.2 Hackハードウェアのプラットフォーム仕様 5.2.1 概観 5.2.2 CPU 5.2.3 命令メモリ 5.2.4 入出力 5.2.5 データメモリ 5.2.6 コンピュータ 5.3 実装 5.3.1 CPU 5.3.2 メモリ 5.3.3 コンピュータ 5.4 プロジェクト 5.5 展望 6章 アセンブラ 6.1 背景 6.2 Hack機械語の仕様 6.2.1 プログラム 6.2.2 シンボル 6.2.3 構文規則 6.3 アセンブリからバイナリへの変換 6.3.1 命令の処理 6.3.2 シンボル処理 6.4 実装 6.4.1 基本版アセンブラの開発 6.4.2 完全版アセンブラの開発 6.5 プロジェクト 6.6 展望 第II部 ソフトウェア II.1 Jackプログラミング II.2 プログラムのコンパイル 7章 仮想マシンI:処理 7.1 仮想マシンのパラダイム 7.2 スタックマシン 7.2.1 pushとpop 7.2.2 スタック演算 7.2.3 仮想メモリセグメント 7.3 VM仕様① 7.4 実装 7.4.1 Hackプラットフォーム上の標準VMマッピング① 7.4.2 VMエミュレータ 7.4.3 VM実装の設計に関する提案 7.5 プロジェクト 7.6 展望 8章 仮想マシンII:制御 8.1 高水準のマジック 8.2 分岐 8.3 関数 8.4 VM仕様② 8.5 実装 8.5.1 関数の呼び出しと復帰 8.5.2 Hackプラットフォーム上の標準VMマッピング② 8.5.3 VM実装の設計案 8.6 プロジェクト 8.7 展望 9章 高水準言語 9.1 例 9.2 Jack言語の仕様 9.2.1 構文要素 9.2.2 プログラムの構造 9.2.3 データ型 9.2.4 変数 9.2.5 文 9.2.6 式 9.2.7 サブルーチン呼び出し 9.2.8 オブジェクトの生成と破棄 9.3 Jackアプリケーションの作成 9.4 プロジェクト 9.5 展望 10章 コンパイラI:構文解析 10.1 背景 10.1.1 字句解析 10.1.2 文法 10.1.3 パース 10.1.4 パーサ 10.2 仕様 10.2.1 Jack言語の文法 10.2.2 Jack言語の構文解析器 10.3 実装 10.4 プロジェクト 10.4.1 トークナイザ 10.4.2 コンパイルエンジン 10.5 展望 11章 コンパイラII:コード生成 11.1 コード生成 11.1.1 変数の扱い 11.1.2 式のコンパイル 11.1.3 文字列のコンパイル 11.1.4 文のコンパイル 11.1.5 オブジェクトの扱い 11.1.6 配列のコンパイル 11.2 仕様 11.3 実装 11.3.1 仮想マシンへの標準マッピング 11.3.2 実装ガイドライン 11.3.3 ソフトウェアアーキテクチャ 11.4 プロジェクト 11.5 展望 12章 OS 12.1 背景 12.1.1 数学演算 12.1.2 文字列 12.1.3 メモリ管理 12.1.4 グラフィック出力 12.1.5 文字出力 12.1.6 キーボード入力 12.2 Jack OSの仕様 12.3 実装 12.4 プロジェクト 12.5 展望 13章 さらなる冒険へ 13.1 ハードウェアの実現 13.2 ハードウェアの改良 13.3 高水準言語 13.4 最適化 13.5 通信 付録A ブール関数の合成 A.1 ブール代数 A.2 ブール関数の合成 A.3 Nandの表現力 付録B ハードウェア記述言語 B.1 HDLの基本 B.2 マルチビットバス B.3 ビルトインチップ B.4 順序回路 B.5 チップの可視化 B.6 HDLサバイバルガイド 付録C テスト記述言語 C.1 一般的なガイドライン C.2 ハードウェアシミュレータでのチップのテスト C.3 CPUエミュレータ上での機械語プログラムのテスト C.4 VMエミュレータ上でのVMプログラムのテスト 付録D Hackのチップセット 付録E Hackの文字セット 付録F Jack OSのAPI F.1 Math F.2 String F.3 Array F.4 Output F.5 Screen F.6 Keyboard F.7 Memory F.8 Sys 付録G オンラインIDEの使い方 G.1 オンラインIDEの概要 G.2 オンラインIDEの主要ツール G.3 ハードウェアシミュレータ G.4 CPUエミュレータ G.5 アセンブラ G.6 VMエミュレータ G.7 Jackコンパイラ G.8 日本語版のサポートサイト 索引 </pre> </div> </section> </section> <div class="related-items"> <div class="sectionRow__Heading"> <h3>関連書籍</h3> </div> <div class="sectionRow__Content"> <div class="sectionRow__BestLarge" id="bestEbooks"> <div class="sectionRow__Best" id="bestEbook1"> <a class="sectionRow__BestCover" href="/books/9784814400850/"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0085-0.jpeg" alt="Binary Hacks Rebooted"> </a> </div> <div class="sectionRow__Best hidden" id="bestEbook2"> <a class="sectionRow__BestCover" href="/books/9784814400072/"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0007-2.jpeg" alt="詳解 システム・パフォーマンス 第2版"> </a> </div> <div class="sectionRow__Best hidden" id="bestEbook3"> <a class="sectionRow__BestCover" href="/books/9784814400591/"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0059-1.jpeg" alt="ゼロから作るDeep Learning ❺"> </a> </div> <div class="sectionRow__Best hidden" id="bestEbook4"> <a class="sectionRow__BestCover" href="/books/9784873119823/"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-87311-982-3.jpeg" alt="ソフトウェアアーキテクチャの基礎"> </a> </div> <div class="sectionRow__Best hidden" id="bestEbook5"> <a class="sectionRow__BestCover" href="/books/9784873118703/"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-87311-870-3.jpeg" alt="データ指向アプリケーションデザイン"> </a> </div> <div class="sectionRow__Best hidden" id="bestEbook6"> <a class="sectionRow__BestCover" href="/books/9784873115658/"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-87311-565-8.jpeg" alt="リーダブルコード"> </a> </div> </div> <div class="sectionRow__BestThumbnails" id="bestEbookThumbnails"> <button class="sectionRow__bestBookThumbnailsItem" data-for="bestEbook1" aria-selected="true" title="Binary Hacks Rebooted"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0085-0.jpeg" alt="94540429855544"> </button> <button class="sectionRow__bestBookThumbnailsItem" data-for="bestEbook2" title="詳解 システム・パフォーマンス 第2版"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0007-2.jpeg" alt="94540439392328"> </button> <button class="sectionRow__bestBookThumbnailsItem" data-for="bestEbook3" title="ゼロから作るDeep Learning ❺"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-8144-0059-1.jpeg" alt="94540440852464"> </button> <button class="sectionRow__bestBookThumbnailsItem" data-for="bestEbook4" title="ソフトウェアアーキテクチャの基礎"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-87311-982-3.jpeg" alt="94540440970608"> </button> <button class="sectionRow__bestBookThumbnailsItem" data-for="bestEbook5" title="データ指向アプリケーションデザイン"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-87311-870-3.jpeg" alt="94540441658392"> </button> <button class="sectionRow__bestBookThumbnailsItem" data-for="bestEbook6" title="リーダブルコード"> <img src="https://www.oreilly.co.jp/books/images/picture_large978-4-87311-565-8.jpeg" alt="94540445282864"> </button> </div> </div> </div> </div> </main> <footer class="footer__FooterSection"> <div class="pageWidth"> <div class="footer__FooterTop"> <div class="footer__List"> <h3><a href="https://www.oreilly.co.jp/company/">About</a></h3> <a href="https://www.oreilly.co.jp/company/">会社概要</a> <a href="https://www.oreilly.co.jp/orj/privacypolicy.shtml">個人情報について</a> <a href="http://www.oreilly.com/">O’Reilly Media</a> <a href="http://makezine.jp/">Make: Japan</a> <a href="http://makezine.jp/events">Maker Faire Tokyo</a> </div> <div class="footer__List"> <h3><a href="https://www.oreilly.co.jp/company/">Support</a></h3> <a href="https://www.oreilly.co.jp/feedback/">Contact us</a> <a href="https://www.oreilly.co.jp/bookclub/">Bookclub</a> <a href="https://www.oreilly.co.jp/order/">書籍注文</a> </div> <div class="footer__Apps"> <h3>Download the O’Reilly app</h3> <p>Take O’Reilly with you and learn anywhere, anytime on your phone <span class="nowrap">and tablet.</span> </p> <div class="footer__DownloadLinks"> <a href="https://itunes.apple.com/us/app/safari-to-go/id881697395"><img src="https://cdn.oreillystatic.com/oreilly/images/app-store-logo.png" alt="Apple app store"></a> <a href="https://play.google.com/store/apps/details?id=com.safariflow.queue"><img src="https://cdn.oreillystatic.com/oreilly/images/google-play-logo.png" alt="Google play store"></a> </div> </div> </div> <div class="footer__FooterBase"> <a aria-current="page" class="footer__Logo" title="Go to home page" href="/"><img src="/assets/images/logo_oreilly_japan.svg" alt="O'Reilly logo"></a> <p>© 2022, O’Reilly Japan, Inc. oreilly.co.jpに掲載されているすべてのトレードマークおよび登録商標は、それぞれの所有者に帰属します。</p> </div> </div> </footer> <script src="/assets/scripts/cookies-policy.6d8dcbae.js"></script> <script> let coll = document.getElementsByClassName('collapsible'); for (let i = 0; i < coll.length; i++) { let button = document.createElement('button'); button.setAttribute('type', 'button'); button.setAttribute('class', 'collapsible'); button.textContent = coll[i].textContent; coll[i].replaceWith(button) coll[i].addEventListener('click', function () { this.classList.toggle('collapsible-active'); let content = this.nextElementSibling; if (content.style.maxHeight) { content.style.maxHeight = null; } else { content.style.maxHeight = content.scrollHeight + 'px'; } }); } </script> <script src="/assets/scripts/scripts.js"></script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-6009404-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-6009404-1'); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10