目次
CPUがプログラムを動かすしくみから理解する
特集 C言語で学ぶ低レイヤ[デバッグ/高速化/AI処理]
イントロダクション 低レイヤ・プログラミングのススメ
第1部 CPUがプログラムを動かすしくみ
(1)高速化,(2)デバッグ力の向上,(3)セキュリティ…これからのプログラマの大きな武器になる
第1章 CPUを動かすしくみを知る動機とメリット
Appendix1 第1部で扱う技術…CPU/コンパイラ/OSの関係
関数やローカル変数はCPUでどう実現されている?
第2章 C言語がCPUの違いを抽象化するしくみ
OSやコンパイラの違いを吸収する仕組みから吸収できない環境の違いまで
第3章 C言語が環境の違いを抽象化するしくみ
アプリケーション,プロセス,スレッドの関係性から役割分担まで
第4章 CPUとOSによる実行環境の抽象化(1)…基礎知識
アドレス変換と権限管理,システム・コール呼び出しのしくみ
第5章 CPUとOSによる実行環境の抽象化(2)…メカニズム
アセンブリ言語コードを組みあわせてデバイスにアクセスする
第6章 C言語による抽象化の範囲を超えて低レイヤのプログラムを書く方法
Appendix2 アセンブリ言語の命令と記述方法
第2部 低レイヤ・プログラミング…デバッグ編
CPUが実数を扱う方法を理解して正確な数値演算プログラムを書く
第1章 浮動小数点数演算の基礎知識
演算回路のビット幅が足りないときの工夫まで
第2章 浮動小数点数演算の誤差と有効数字の桁数
CPUと処理系ごとに変わる…整数の加減算と乗算,浮動小数点数演算も
第3章 オーバフロー時の挙動と確認方法
方法ごとのロード時間差をプログラムで調査
第4章 Armプロセッサの即値ロード命令の使い方
GDBデバッガによるブレークポイント設定やステップ実行中の挙動を見てみる
第5章 アセンブリ言語でひも解くデバッグ中のCPUの動作
マルチコア環境で発生する命令順序入れ替えバグを防ぐ…RISC-Vを例に
第6章 メモリ・モデルの基本と挙動の制御方法
第3部 低レイヤ・プログラミング…最適化編
コア間で整合性を取る方法からその代償フォルス・シェアリングまで
第1章 マルチスレッド環境におけるCPUキャッシュの仕組み
画像フィルタの処理が2.5〜5倍に…高速化の一部始終を紹介
第2章 キャッシュを意識したコード最適化テクニック
普通はプログラマから見えない裏側をCプログラムを工夫して調査する
第3章 キャッシュの細かい挙動を探る
第4部 低レイヤ・プログラミング…AI処理編
AI処理で多用する行列演算でも使える
第1章 プリフェッチ命令で処理を高速化する
GPUでもキャッシュが重要
第2章 CUDAのAPIを使って行列積演算を高速化する
人工知能や科学計算
新連載 ローカルLLMで実現する現場対応支援のしくみ〈第1回〉
いつまでもいると思うな親と先輩…現場の知が失われる前に
説明可能なAI〈第5回〉
モデルの学習が適切か判断できる!モデルに依存しない説明手法…PFI
AIエージェント同士で連携!通信プロトコルAgent2Agent〈第2回〉
Hello Worldで見るA2Aサーバ作りと通信
OpenAI Agents SDKで始める自分専用AIエージェント開発〈第2回〉
OpenAI Agents SDK設定(2)…開発管理ツールの使い方
Raspberry Piライフ
ラズパイの限界に挑戦!ローカルLLM動作検証レポート〈第3回〉
RAGを作る(2)…ベクトル検索ライブラリの構築
IoTマイコンESP32
ESP32のWi-Fi電波で侵入検知!AIエッジ・デバイスの開発〈第3回〉
取得するCSIデータの振幅/位相の可視化とノイズ除去
テクノロジー掘り下げ
CPU最適化プログラミング〈第4回〉
パイプラインによる高速化のしくみと,分岐命令の影響
OS使いこなし
Yocto Projectではじめる組み込みLinux開発入門〈第22回〉
Yocto Project5.0編(5)…ビルド済みのバイナリを組み込む
最終回 C言語+リアルタイムOSで初めての本格マイコン開発〈第7回〉
マルチコアCPUでRTOSを動かす(後編)
ニュース&レポート&お知らせ
ほんのりInterface
新連載 農業現場のエレクトロニクス〈第1回〉
腰の負担を軽減,マッスルスーツ
読者プレゼント
次号予告
別冊付録
FPGAマガジン特別版 No.5
詳細な内容はこちら