独習アセンブラ 新版(大崎 博之)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. 独習アセンブラ 新版

独習アセンブラ 新版


形式:
書籍
発売日:
ISBN:
9784798170299
定価:
4,268(本体3,880円+税10%)
仕様:
B5変・736ページ
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発
シリーズ:
独習
紙の書籍

アセンブリ言語だけでなく
コンピュータアキーテクチャを学ぶ
標準教科書

今や、アセンブリ言語は、
最初に学ぶプログラミング言語ではありません。
それでも、C言語をはじめとしたプログラムを書いて、
実行し、デバッグする中で、必ずたどり着くことになるのが、
アセンブリ言語であり、コンピュータアーキテクチャです。

本書は、CPUの仕組みやメモリ、
データ構造について学びながら、
・x86(IA-32)
・x86_64
・ARM
・AVR
・CASL II
といった幅広いアーキテクチャの
アセンブリ言語に触れ、
「コンピュータがどのように
プログラムを実行しているのか」を
深く理解するための一冊です。

■目次
・Chapter 1 アセンブラとアセンブリ言語
・Chapter 2 数の表現
・Chapter 3 文字の表現
・Chapter 4 コンピュータの構造:CPUの構成
・Chapter 5 コンピュータの構造:メモリとCPU処理の抽象モデル
・Chapter 6 コンピュータの構造:スタック
・Chapter 7 GNUアセンブラGAS
・Chapter 8 アセンブリ言語プログラムの実行とインラインアセンブラ
・Chapter 9 x86命令セット:レジスタ
・Chapter 10 x86命令セット:データ転送
・Chapter 11 x86命令セット:算術演算、論理演算
・Chapter 12 x86命令セット:実行制御
・Chapter 13 x86命令セット:浮動小数点演算
・Chapter 14 x86命令セット:SIMD命令
・Chapter 15 仮想コンピュータの例:COMET II
・Chapter 16 マイクロコントローラの例:Atmel AVR
・Chapter 17 RISC CPUの例:Armv8-A
・Chapter 18 64ビットCPUの例:x86-64

アセンブリ言語だけでなくコンピュータアーキテクチャを学ぶ標準教科書

本書の学習メゾット

わかりやすい【解説】

わかりやすい【解説】

基礎的な知識・概念・機能を、サンプルプログラムを例示しながら詳細かつ丁寧に解説します。

理解が深まる【ワンポイント解説】

理解が深まる【ワンポイント解説】

押さえておきたいことを「note」で補足解説しています。プラスαの知識が身につきます。

学習成果を確かめる【理解度チェック】

学習成果を確かめる【理解度チェック】

各章末にある【理解度チェック】で、その章で学んだ事項を理解できたか確認できます。

Chapter 1 アセンブラとアセンブリ言語
1.1 アセンブリ?アセンブル?アセンブラ?
1.2 プログラムの表現
1.3 高級言語からアセンブリ言語へ
1.4 C言語から機械語へのコンパイル
1.5 アセンブリ言語から機械語へ

Chapter 2 数の表現
2.1 10進数と60進数
2.2 N進数
2.3 2進数(整数)
2.4 16進数
2.5 8進数
2.6 2進数(実数)

Chapter 3 文字の表現
3.1 文化・慣習による表記の違い
3.2 文字に関する用語
3.3 ASCII
3.4 UnicodeとUTF-8

Chapter 4 コンピュータの構造:CPUの構成
4.1 複雑化するコンピュータ
4.2 コンピュータの構成
4.3 CPUの構成
4.4 IA-32アーキテクチャのレジスタ
4.5 デバッガによるトレース(レジスタ)

Chapter 5 コンピュータの構造:メモリとCPU処理の抽象モデル
5.1 いろいろなメモリ
5.2 メモリのアドレスとアドレスマップ
5.3 リトルエンディアンとビッグエンディアン
5.4 データの大きさを表す用語
5.5 CPU処理の抽象モデル
5.6 デバッガによるトレース(メモリアクセス)

Chapter 6 コンピュータの構造:スタック
6.1 CPUとスタック
6.2 データ構造としての「スタック」
6.3 CPUとメモリによるスタックの実現
6.4 スタックによる関数呼び出しの実現
6.5 ABI(Application Binary Interface)
6.6 デバッガによるトレース(スタック)

Chapter 7 GNUアセンブラ(GAS)
7.1 GNUアセンブラ(GAS)とは
7.2 GNU binutilsによるバイナリファイル解析
7.3 GNUアセンブラを使ってみる
7.4 アセンブリ言語プログラムの例
7.5 GNUアセンブラ(GAS)の特徴
7.6 GASの文法
7.7 IA-32アーキテクチャ固有の話題
7.8 GASの疑似命令(ディレクティブ)

Chapter 8 アセンブリ言語プログラムの実行とインラインアセンブラ
8.1 インラインアセンブラとは?
8.2 C言語からアセンブリ言語プログラムの呼び出し
8.3 プログラムの例:CPUのTSC(Time Stamp Counter)取得
8.4 GCCの基本asm文
8.5 GCCの拡張asm文
8.6 インラインアセンブラの実例

Chapter 9 x86命令セット(レジスタ)
9.1 IA-32アーキテクチャのCPU
9.2 IA-32アーキテクチャのドキュメント
9.3 レジスタ
9.4 命令の分類
9.5 よく使われる命令ランキング

Chapter 10 x86命令セット(データ転送)
10.1 データ転送命令とは
10.2 汎用データ転送命令:MOV
10.3 データ拡張転送命令:MOVZX/MOVSX
10.4 交換命令:XCHG
10.5 スタック操作命令:PUSH
10.6 スタック操作命令:POP
10.7 アドレス計算命令:LEA

Chapter 11 x86命令セット(算術演算・論理演算)
11.1 本章で扱う命令
11.2 加算命令:ADD/ADC
11.3 減算命令:SUB/SBB
11.4 乗算命令:MUL/IMUL
11.5 除算命令:DIV/IDIV
11.6 インクリメント命令:INC
11.7 デクリメント命令:DEC
11.8 比較命令:CMP
11.9 論理命令:AND/OR/XOR
11.10 論理命令:NOT
11.11 ビットシフト命令:SAL/SAR/SHL/SHR

Chapter 12 x86命令セット(実行制御)
12.1 プログラムの実行制御とは?
12.2 無条件転送命令:JMP
12.3 サブルーチンの呼び出し:CALL
12.4 サブルーチンから戻る:RET
12.5 条件付きジャンプ命令:Jcc
12.6 コードリーディング

Chapter 13 x86命令セット(浮動小数点演算)
13.1 IA-32アーキテクチャにおける浮動小数点演算
13.2 x87 FPU(浮動小数点ユニット)
13.3 x87 FPUによる浮動小数点演算
13.4 x87 FPU命令の概要
13.5 デバッガによるトレース(浮動小数点演算)
13.6 コードリーディング

Chapter 14 x86命令セット(SIMD命令)
14.1 SIMDとは?
14.2 IA-32アーキテクチャにおけるSIMD命令
14.3 デバッガによるトレース(SIMD命令)
14.4 応用的プログラミング

Chapter 15 仮想コンピュータの例:COMET II
15.1 COMET IIとCASL IIの概要
15.2 CASL IIの文法
15.3 COMET IIのアーキテクチャ
15.4 COMET II命令セット(概要、アドレッシングモード)
15.5 COMET II命令セット(データ転送)
15.6 COMET II命令セット(算術/論理演算)
15.7 COMET II命令セット(実行制御)
15.8 シミュレータによるトレース
15.9 コードリーディング

Chapter 16 マイクロコントローラの例:Atmel AVR
16.1 Atmel AVRファミリの概要
16.2 GNUアセンブラ(AVR固有の機能)
16.3 AVRファミリCPUのアーキテクチャ
16.4 AVR命令セット(概要、アドレス指定モード)
16.5 AVR命令セット(データ転送)
16.6 AVR命令セット(算術/論理演算)
16.7 AVR命令セット(実行制御)
16.8 デバッガによるトレース(AVR)
16.9 コードリーディング

Chapter 17 RISC CPUの例:Armv8-A
17.1 Armv8-Aの概要
17.2 GNUアセンブラ(ARM固有の機能)
17.3 Armv8-Aアーキテクチャ
17.4 Armv8-A A64命令セット(概要、アドレス指定モード)
17.5 Armv8-A A64命令セット(データ転送)
17.6 Armv8-A A64命令セット(算術/論理演算)
17.7 Armv8-A A64命令セット(実行制御)
17.8 コードリーディング

Chapter 18 64ビットCPUの例:x86-64
18.1 Intel 64アーキテクチャの概要
18.2 Intel 64アーキテクチャの特徴
18.3 よく使われる命令ランキングとABI
18.4 コードリーディング

付属データはこちら

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2022年08月25日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 041
下から5行目
163 ×3+162 ×10+161 ×2+160 ×14=14,984
163 ×3+162 ×10+161 ×2+160 ×14=14,894
2021.10.08
1刷 049
下から2行目
(= 65535.99609375) です。つまり、32ビットで表現できる値の範囲が0.00390625~65535.99609375となります。
(= 16777215.99609375) です。つまり、32ビットで表現できる値の範囲が0.00390625~16777215.99609375となります。
2022.08.25
1刷 174
「6.6.3デバッガからの出力を理解する」2つ目のコード
2: /x $esp = 0xbffffabc
2: /x $esp = 0xbffffadc
2021.12.27
1刷 175
「6.6.3デバッガからの出力を理解する」1つ目のコード
3: x/32xb $esp 0xbffffabc: 0x41 0xfb 0xdf 0xb7 0x01 0x00 0x00 0x00   0xbffffac4: 0x54 0xfb 0xff 0xbf 0x5c 0xfb 0xff 0xbf   0xbffffacc: 0xe4 0xfa 0xff 0xbf 0x01 0x00 0x00 0x00   0xbffffad4: 0x00 0x00 0x00 0x00 0x00 0xf0 0xfb 0xb7  
3: x/32xb $esp 0xbffffadc: 0x41 0xfb 0xdf 0xb7 0x01 0x00 0x00 0x00 0xbffffae4: 0x74 0xfb 0xff 0xbf 0x7c 0xfb 0xff 0xbf 0xbffffaec: 0x04 0xfb 0xff 0xbf 0x01 0x00 0x00 0x00 0xbffffaf4: 0x00 0x00 0x00 0x00 0x00 0xf0 0xfb 0xb7
2021.12.27
1刷 175
「6.6.3デバッガからの出力を理解する」1つ目のコードの下の文章 2行目と4行目
2行目:現在、スタックの一番上が 0xbffffabcです。 4行目:その後、レジスタ ESP の値が 0xbffffac0 (= 現在のスタックポインタの値 + 4 バイト) に変化します。
2行目:現在、スタックの一番上が 0xbffffadcです。 4行目:その後、レジスタ ESP の値が 0xbffffae0 (= 現在のスタックポインタの値 + 4 バイト) に変化します。
2021.12.27