はじめに アプリケーションを起動させるEXEファイルを、普段何気なく実行していることと思います。皆さんは、このEXEファイルの中身について考えてみたことはありますか? 本連載は、そのEXEファイルの内部構造がどのようになっているのかを解説していくものです。 EXEファイルには具体的に、どのような情報が格納されているのでしょうか。通常、Visual C++やVisual Basic、Delphiなどのコンパイラが自動的に生成してくれるので、考えることはありませんが、今回はこの疑問に真っ向から勝負を挑んでいきます。EXEは魔法の箱? 筆者は「ActiveBasic」というネイティブコンパイラ搭載型の統合開発環境を開発しています。コンパイラ開発イコール、EXEファイルの仕様をかなり細かい部分まで理解しなければならないという状況に置かれることを意味します。 Javaや.NETが騒がれる昨今、あえて
アドレス,機械語, アセンブラ 1: // AsmTest.cpp : コンソール アプリケーションのエントリ ポイントを 定義します。 2: // 3: 4: #include "stdafx.h" 5: 6: 7: int _tmain(int argc, _TCHAR* argv[]) 8: { 00411390 55 push ebp 00411391 8B EC mov ebp,esp 00411393 81 EC CC 00 00 00 sub esp,0CCh 00411399 53 push ebx 0041139A 56 push esi 0041139B 57 push edi 0041139C 8D BD 34 FF FF FF lea edi,[ebp-0CCh] 004113A2 B9 33 00 00 00 mov ecx,3
はじめに 64ビットCPUが出始めて、数年が経ちます。現状では、ほとんどのデスクトップPCが64ビットCPUを搭載する形になり、ノートPCの64ビット化も時間の問題と思われます。今回は、64ビット技術がどのような特徴を持ち合わせているのか、ソフトウェア側のアプローチをどのように進めていったらよいのかという話題で進みます。そもそも、64ビットCPUって 実は、ひとことで64ビットCPUと言うと、2つの異なるCPUを意味してしまいます。AMD64/EM64-TIA-64 AMD64/EM64-T(以下、AMD64)とは、x86アーキテクチャのレジスタ幅を64ビットに拡張し、64ビット対応のネイティブコードを追加した規格になります。一般的に、パソコン市場で64ビットCPUと言うと、ほとんどがこちらのAMD64のことを意味しています。因みに、このアーキテクチャの設計を一番初めに行ったのはAMDで
x87 FPU x87 FPUは、x86アーキテクチャが標準で搭載する命令セットの一つです。st(0)~st(7)までの8つのレジスタ(80ビット)が利用可能ですが、これらはスタック構造になっており、各レジスタに自由にアクセスすることはできません。命令セットに即値モードがないため、単純に値を代入するだけでもメモリアクセスを要します。 しかしながら、x86 CPU同士であれば環境依存の問題が生じないという大きなメリットも持ち合わせます。一般的なx86用Cコンパイラなどは、デフォルトでFPU用のネイティブコードを生成するようになっていることが多いようです。MMX MMX Pentium以降のIntel CPUに組み込まれる拡張命令セットです。FPUレジスタの64ビット分を活用し、8ビット整数8組、16ビット整数4組、32ビット整数2組に対する演算を同時に行うことができます。 ちなみに、MMX命
はじめに Visual C++(以下、VC++)で使えるクロスプラットフォームの開発キットの一つに、wxWidgets(ダブリューエックスウィジェッツ)があります。wxWidgetsは相応の歴史と実績がある魅力的なツールです。しかしながら、日本語のリソースが意外に少ないため、最初の導入に苦労される方も多いのではないでしょうか。 本記事では、導入する際につまづきやすいポイントを確認しながら、wxWidgetsに同梱されている「samples」や「demos」フォルダのコードをビルドするまでを解説します。対象読者 Visual C++ 2005(以下、VC++2005)とMicrosoft Platform SDK(以下、PSDK)が既に準備済みで、VC++の簡単なテストコードをビルドできる方。zipファイルの展開方法、拡張子の表示方法、触っていいフォルダといけないフォルダの区別など、プログラ
はじめに アセンブリ言語は、コンピュータのCPUが直接理解することができる命令である機械語を記号化した言語であり、機械語と対の関係にあります。アセンブリ言語の1文は1つの機械語に置き換わります。機械語は2進数だけで構成されるバイナリデータで、命令の意味を表すオペコードと呼ばれる値でCPUに指示を出しています。人間が直接機械語を読み書きする場合は、16進数を使うのが一般的です。どちらにしても、数値だけで表現されるプログラミングは人間が読み書きするには不向きなので、数値の代わりにアルファベットによる記号を与えたものがアセンブリ言語なのです。マシン後に対応したアセンブリ言語の記号のことをニーモニックと呼びます。 しかし、ニーモニックを学習するだけではアセンブリ言語は使えません。問題は、CPUがメモリと通信を行う際に発生するさまざまなアドレスの計算です。機械語の世界では変数や関数という概念は存在せ
はじめに ニューラルネットワークの主要なアルゴリズムであるバックプロパゲーション法を、車両のナンバープレートの自動読取りへの応用例で紹介します。完成版のアプレットを見る 対象読者 パターン認識に興味を持ち、特にニューラルネットワークを用いる方法に関心のある人。必要な環境 J2SE 5.0を使っていますが、これより古いバージョンでも、本稿のコードをコンパイルし、実行することができます。ただし、添付のコンパイル済みアプレットの実行には、J2SE Runtime Environment 5.0が必要です。また、CPUパワーが足りないと、学習に時間がかかります。 パターンには、音声、画像、図形、文字などがあります。これらが何であるかを認識することを「パターン認識」と呼び、音声認識の応用は音声入力装置に、画像認識の応用は顔や指紋の照合に使われます。文字認識は、大別して、手書き文字の認識と、印刷文字の
はじめに 「PCとスーパーコンピュータ(以下、スパコン)ってどのくらい性能が違うのだろう」と思ったことはないでしょうか。 TOP500という名で知られているスパコンの世界ランキングが、1年に2回、6月に開かれる国際会議International Supercomputer Conference(通称ISC)と、11月に開かれる国際会議International Conference for High Performance Computing, Networking, Storage and Analysis(通称Supercomputing Conference, SC)で発表されています(結果はTOP500 Supercomputing Sitesで閲覧できます)。 スパコンのTOP500を決めるのに使われるベンチマーク・プログラムは、Linpack Benchmarkと呼ばれるもので
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く