home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

771 - 780 / 1320    [|<]  [|<]  [<]  71  72  73  74  75  76  77  78  79  80   [>]  [>|][>|]
タイトル/名前 更新者 更新日
技術/歴史/FAQ/DOS/Vって結局OSの名前?規格の名前? msakamoto-sf 2010-04-07 13:48:29
技術/歴史/FAQ/キーボード・マウスコネクタの"PS/2"について msakamoto-sf 2010-04-07 13:47:33
技術/歴史/FAQ/EMM,XMS,DPMI...DOSの拡張機能略称大杉ワロス msakamoto-sf 2010-04-07 13:44:33
日記/2010/04/06/しょうらいのゆめ msakamoto-sf 2010-04-06 22:16:46
技術/歴史/DOS時代のメモリ管理(EMS,XMS周辺) msakamoto-sf 2010-04-05 13:14:24
技術/歴史/DOS時代,Windows初期のCPUとPC msakamoto-sf 2010-04-03 00:01:59
技術/歴史/zip,gzip,zlib,bzip2 msakamoto-sf 2010-04-03 00:01:24
日記/2010/03/31/歴史のスパゲッティコード msakamoto-sf 2010-03-31 23:17:30
C言語系/呼び出し規約/x86 msakamoto-sf 2010-03-27 17:19:17
日記/2010/03/27/「x86呼び出し規約」シリーズ一旦完結。 msakamoto-sf 2010-03-27 17:12:37
ソート項目 / ソート順     1ページ 件ずつ表示

技術/歴史/FAQ/DOS/Vって結局OSの名前?規格の名前?  

所有者: msakamoto-sf    作成日: 2010-04-07 13:47:45
カテゴリ:

DOS/Vって結局OSの名前?規格の名前?

当初は1990年にIBMが開発した "IBM DOS Version J4.0/V"、およびその後の "MS-DOS 5.0/V" を含む互換OSの略称です。

DOS/V登場以前、日本ではNECのPC-9801シリーズが殆ど独占状態でした。というのも、日本のPC市場ではカナ漢字表示が必須条件で、NECのPC-9801シリーズではハードウェアレベルでカナ漢字フォントを搭載し、高速な日本語表示を可能としていたからです。OSもNEC側でカスタマイズしたMS-DOSを販売していました。CPUこそx86と互換のv30などを搭載していましたが、マザーボードの構成などハードウェアレベルでは当時世界標準だったIBM PCとは互換性のない、今で言うところのガラパゴス状態でした。

それを崩したのがDOS/Vで、PS/2で広まったVGAのスペックを活用し、カナ漢字のフォント情報をメモリ上に展開する、ソフトウェアによる日本語表示を実現しました。IBMは1991年には"PCオープン・アーキテクチャー推進協議会"を立ち上げ、ハードウェア仕様の一本化を推進し、結果としてPC/AT互換機とDOS/Vの普及に繋がっています。

"DOS/V"の"V"はVGAを使っているところから来たようです。

この辺の歴史を見てみると、2009-2010年現在進行中のAndroidやAppleのiPhone, iPadがガラパゴスと呼ばれた携帯市場に着々と進出している流れと重なって見えて面白いですね。

参考:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-04-07 13:48:29
md5:ea65a4c5b1b96ba050cf554de7f906a2
sha1:0d00f98e894bc8f1a67d50571fa4903dd102fac6

技術/歴史/FAQ/キーボード・マウスコネクタの"PS/2"について  

所有者: msakamoto-sf    作成日: 2010-04-07 13:44:52
カテゴリ:

キーボード・マウスで使われている"PS/2"って、IBM Personal System/2 とどういう関係?

PC/AT互換機は1984年にIBMが発売した "PC AT" と互換性のあるマシンを言います。もっとも、現代のPC/AT互換機は互換性を考慮したものの、その後に登場した拡張や標準化を重ねており、当時の"PC AT"の面影は残っていません。

キーボード・マウスで使われているコネクタの "PS/2" というのは、1987年にIBMが発売した "IBM Personal System/2"(以下PS/2) から来ています。PS/2で登場したキーボード・マウスコネクタ、720kb/1.4MBフロッピーディスク、VGAはPC/AT互換機にも取り込まれ、現代でも生き延びています。
それ以前はどうなっていたかというと、グラフィックはEGAと呼ばれる規格で最大640x350ピクセル、マウスはシリアルポート、フロッピーディスクは5.25インチという時代でした。

PS/2で使われたMCAバスは結局PC/AT互換機には取り込まれませんでしたが、キーボード・マウスコネクタ、VGA、フロッピーディスクなどは順調にPC/AT互換機に組み込まれ、やがて登場するDOS/Vパソコンで一気に業界標準として広まりました。

今日使われているPCのお爺さん・お婆さんは"IBM PC 5150"、お父さんとお母さんにあたるのが"IBM PC AT"と"IBM Personal System/2"ですね。

ちなみにmsakamoto-sfは中学時代、EPSONの"PC-286"というラップトップを使ったことがありますが、シリアルポートのマウスを接続していました。ちなみに当時からトラックボールのマウスを自分で選んで購入していましたので、トラックボールマンセーなのは昔からです。

参考:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-04-07 13:47:33
md5:d1bdfbe428286e4490b3ad0818201aa2
sha1:52ddaba713a024e10c4acae07609e59c27e889b5

技術/歴史/FAQ/EMM,XMS,DPMI...DOSの拡張機能略称大杉ワロス  

所有者: msakamoto-sf    作成日: 2010-04-07 13:40:31
カテゴリ:

EMS, EMM386, XMS, DPMI, ... DOSの拡張機能の略称多すぎます!

DOSはCPUやメモリ容量の増加と共に歴史を歩んできたので、DOSの拡張機能も段階的に増えていきました。2010年現在から見ると、一度に沢山の略称・拡張機能が出てくるので混乱します。

拡張機能は大きく2つに分類されます。

  1. "拡張メモリ"(Expanded Memory)を使う機能
  2. 80286以降のプロテクトモードを活用する機能
Expanded Memory を使う機能
初期のPCは数十 - 数百KB程度のメモリしか搭載していませんでした。OSやアプリケーションの発展と共にメモリ不足の問題が表面化してくると、メモリーカードを専用の拡張バスに差し込むことでメモリ容量を増やす方式が登場してきます。このメモリは "Expanded Memory" と呼ばれ、物理RAMとは別の方式(UMAにマッピングされたバンク切り替え方式)でアクセスする為の専用のデバイスドライバが必要でした。これが "Expanded Memory Management"(EMM)と呼ばれるタイプのソフトウェアで、技術仕様を統一したのが "Expanded Memory Specification"(EMS)です。
80286以降のプロテクトモードを活用する機能
80286の登場で、プロテクトモードを使うことで16MB(386以降なら4GB)のメモリ空間にアクセス出来るようになりました。しかしDOS自体はリアルモードを使うOSでしたので、そのままではプロテクトモードの恩恵を受けることができません。そこで登場したのが "DOS extender" と呼ばれるソフトウェアで、アプリケーションに対してプロテクトモードの機能を提供し、16MB(4GB)のメモリ空間を使えるようにするソフトウェアです。

プロテクトモード登場後に出てきたのが、1MBを超えるメモリ空間にアクセスする為の "XMS", Windows 3.0 と共に登場したDOSアプリからプロテクトモードを使う為のクライアント・サーバーモデルを意識したDPMI の二つです。

XMS (eXtended Memory Specification)
x86のリアルモードではアドレスバスが20bit、つまり最大1MBまでのメモリ空間しか使えませんでした。80286では24bit(16MB)、80386では32bit(4GB)に増えますが、増えたメモリ空間を使うにはプロテクトモードに切り替わる必要があります。プロテクトモードで使える、1MBを超えるメモリ空間を "eXtended Memory" と呼び、DOS上からそこにアクセスする為の技術仕様(インターフェイス)を定めたのが "eXtended Memory Specification"(XMS) です。XMS登場後、XMSを使ってEMSをエミュレートするタイプのEMMも開発されています。
DPMI (DOS Protected Mode Interface)
プロテクトモード機能を活用する為のインターフェイスを定めた仕様で、ソフトウェア割り込みを境界としたクライアント・サーバーモデルを強く意識しています。Windows 3.0でDPMI 0.9が実装されました。

メモリ管理やプロテクトモードはCPUとメモリ容量の発展と共に、少しずつ少しずつ段階的に拡張されていきました。今から見ると一度に沢山の方式があるように見えますが、当時の歴史を追うことで、上述のように大別され、あらましを掴めると思います。

詳細:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-04-07 13:44:33
md5:5c593fb67d70806152e4c5f4dc86659c
sha1:47081cb1e933552059a4f69dc05b51dc3513032f

日記/2010/04/06/しょうらいのゆめ  

所有者: msakamoto-sf    作成日: 2010-04-06 22:15:36
カテゴリ:

ぼく、「ばいなりのまじゅつし」になるんだ!


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-04-06 22:16:46
md5:971112ded2817497966895b5371dad55
sha1:823eb40211ba4e20ecd4409dd3dbb0773f4dfbe0

技術/歴史/DOS時代のメモリ管理(EMS,XMS周辺)  

所有者: msakamoto-sf    作成日: 2010-04-02 11:21:43
カテゴリ: Assembler Windows 

DOS時代、およびWindows3.x, 9x時代くらいまでのメモリ管理技術、特にEMSとXMS周辺のまとめメモです。

HMA, UMA, UMB, EMB, EMM, EMS, EMM386.{SYS|EXE}, QEMM, CEMM, XMS, HIMEM.SYS, LOADHIGH

これらの略語について、簡単に解説+まとめています。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 4
更新者: msakamoto-sf
更新日: 2010-04-05 13:14:24
md5:cc64c9716b653d1ab2fde9648ceeb6a0
sha1:00cb702d7de0cbe8b35cb6389ad1d02ad4534e94

技術/歴史/DOS時代,Windows初期のCPUとPC  

所有者: msakamoto-sf    作成日: 2010-04-01 17:51:36
カテゴリ: Assembler Windows 

DOSの初期~Windowsの初期(Windows3.1)位までの、CPU/IBM PC/DOS/Windows/NEC勢 の簡単なまとめ年表です。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 3
更新者: msakamoto-sf
更新日: 2010-04-03 00:01:59
md5:c8c191f5a14ced06fe425836121fca12
sha1:98a21b0a264ddd95f7d46ad7050745b88d5e5853

技術/歴史/zip,gzip,zlib,bzip2  

所有者: msakamoto-sf    作成日: 2009-11-22 17:11:47
カテゴリ: Linux UNIX Windows 

お仕事絡みで、ZIPファイルの歴史が気になったので調べてみた。
前々から何となく「gzipとzlibとzipってどう違うんだろう」とは思っていたのだけれど、WindowsでLhacaやLhaplusなどのアーカイブソフト、あるいはXP以降ならOSの機能としてデフォルトでzip圧縮できるし、Linux/UNIXでも2-3回コマンドラインオプションを試行錯誤してmanページ見ればtar.gz作ったり逆にWindows上で圧縮したzipを適当に解凍できるので「ま、いっか。」で済ませてた。
でもせっかくなので、技術的な詳細には突っ込まないが、ざっくりとした歴史や流れをWikipediaを中心に追ってみた。
※殆どの記述をWikipediaに依っている為、本記事自体の信頼性はWikipediaと同等かそれに劣るものとして下さい。正確性は無保証、Wikipediaの寄せ集め。自分用のメモです。

簡単に紹介:

  • ZIP : DOS発祥の圧縮アーカイブソフト向けファイルフォーマット。本家はPKZIPで、圧縮アルゴリズムとして採用され有名になった内の一つが"Deflate"アルゴリズム。UNIX/Linux上の実装として"Info-ZIP"プログラムが開発され、これが現在の"zip", "unzip"コマンドである。
  • gzip(GNU zip) : 元々compressというUNIX上の圧縮プログラムがあったが圧縮アルゴリズムの特許問題で普及しなかったため、代替として開発された。名前に"zip"が含まれているがファイルフォーマットとしては互換性のない独自路線。圧縮アルゴリズムとしてPKZIPの"Deflate"を採用しているのが共通点といえば共通点。
  • zlib : gzipのメイン開発者が、"Deflate"アルゴリズム処理部分だけを緩いライセンスで実装したライブラリ。Linux/UNIXだけでなく、Windowsなど幅広いプラットフォームに移植されている。
(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-04-03 00:01:24
md5:29681f2bd931676cf3ae0b1a8c86e025
sha1:9164fabbdfadf7bdba27b43159317344d47b3f43

日記/2010/03/31/歴史のスパゲッティコード  

所有者: msakamoto-sf    作成日: 2010-03-31 21:09:40
カテゴリ:

因果関係・事実関係を、時間軸逆向きに辿っていくのが・・・僅か40年程度の流れでも、これほど大変だとは思っていなかった。それも、比較的記録に残されていると思われるコンピュータの歴史という分野で。
「結果」は時系列で並べればお仕舞いだけど、「原因」を探るのが容易でない。いや、「結果」を揃える事すら難しい。

例えば"0x7C00"。この発祥を求めるにあたり、ビンテージコンピュータであったりIBM PCの歴史であったり、Altairに端を発するマイコンブームの盛り上がりとCP/Mの登場、S100バスの普及やシアトルコンピュータプロダクトの動き、IntelCPUの流れなど・・・いくつものカテゴリに分断されたカードを、自分なりに並べ直した。
"0x7C00"については、たまたま、SCP 86-DOS と IBM PC 5150 ROM BIOS INT 19h の境目を見つけられたので運が良かった。カードの境界線がはっきりと目に飛び込んできた。

「パーソナルコンピュータ」という限定された歴史ですら、すでにスパゲッティコードの様相を呈している。
しかし・・・絡まり合った点と線をほぐしていくのは、個人的には結構快感を感じてしまっている。
カードの並びを読み解くのには前後関係と文脈が必要で、ちょっとした探偵気分を味わえる。

別の見方をすれば、コンピュータの歴史は未だにカードだけが時系列にぶら下がっているだけともいえる。
カードとカードの繋がりを「物語り」に出来ていない。いくつかの人間ドラマについては成功しているが、特定の技術要素に焦点を当てた「物語り」はまだまだ不足しているのだろう。
もっとも現場の技術者にとって必要なのは、現時点で利用出来る「結果」であり、因果関係を「物語り」として理解する必要性は低い。

ここ暫く続けている昔の・・・DOS時代の技術調査は、単に自己満足以外の何ものでもない。
それでも、まだまだ謎(Mystery)は残っている。

  • "ld.so"がshared objectであり、なおかつコマンドラインから実行可能なのはどういう仕組みか?
  • "-fPIC"の有無はいつ登場したのか?どう違うのか?
  • "a.out", "elf", ".so"ファイル、それぞれの発祥は?
  • DOSからWindowsへの流れでの、実行ファイルの歴史は?

どれも、今の時点での仕様がどうなっているのかを調べるだけでは不十分で、歴史を辿らなければならない(Trace)。これらの疑問全てに対して、「Why, When, Who」を見つけ出す事が出来るかは分からない。もし見つけることが出来たら"0x7C00"の時と同様、自分でそれを「物語り」にして語ってみる。

それまでは暫し、コンピュータ技術の歴史に対して "Mystery Tracing" を続けてみたい。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-03-31 23:17:30
md5:87cec9baf5a8f9ebdda1aa9f193514e0
sha1:7c8d031edd69ad5af8a155c90de8dd57d8fe7bfc

C言語系/呼び出し規約/x86  

所有者: msakamoto-sf    作成日: 2010-03-17 10:12:28
カテゴリ: Assembler C言語 UNIX Windows 

x86(80x86)CPUにおける各種「呼び出し規約」, "Calling Convention(s)" が実際にどのようなアセンブラコードになるのか延々と載せていくページ

  • C言語, Cコンパイラ, x86アセンブラの知識を前提としてます。C++も"thiscall"呼び出し規約でちょっとだけ必要。
  • 各種呼び出し規約が、各種コンパイラでどのようなアセンブラコードになるのか、延々と載せていきます。
  • 呼び出し規約それ自体の解説は殆どしてません。末尾の「参考資料」に図入りで詳しいページもありますので、各自適当に調べて下さい。
  • ある程度御存知の方は、末尾の「参考資料」のみリンクショートカットとしてご利用下さい。
  • どのような場合にも掲載されているアセンブラコードになるという保証はありません。関数呼び出しの前後のコードによっては、汎用レジスタの退避・保存用のアセンブラコードが入ってくる可能性もあります。比較的単純なケースでのサンプル集としてご利用下さい。


実行環境

各種コンパイラのバージョンについて。

Visual C++ 2008 Express Edition on Windows XP SP3

> cl
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.
> link
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

Borland C++ Compiler 5.5.1 on Windows XP SP3

> bcc32
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
(...)
> ilink32
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
(...)

OpenWatcom Compiler(16bit)

> wcl -v
Open Watcom C/C++16 Compile and Link Utility Version 1.8
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.

> wcc -v
Open Watcom C16 Optimizing Compiler Version 1.8
Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
Error! E1138: Filename required on command line

OpenWatcom Compiler(32bit)

> wcl386 -v
Open Watcom C/C++32 Compile and Link Utility Version 1.8
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.

> wcc386 -v
Open Watcom C32 Optimizing Compiler Version 1.8
Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
Error! E1138: Filename required on command line

OpenWatcom 環境変数(owsetenv.bat)

@echo off
echo Open Watcom Build Environment
set PATH=C:\WATCOM\BINNT;%PATH%
set PATH=C:\WATCOM\BINW;%PATH%
set INCLUDE=C:\WATCOM\H;%INCLUDE%
set INCLUDE=C:\WATCOM\H\NT;%INCLUDE%
set WATCOM=C:\WATCOM
set EDPATH=C:\WATCOM\EDDAT

※一部16bitでのコンパイル時にのみ

set INCLUDE=%WATCOM%\h;%WATCOM%\h\win

によりヘッダファイルの読み込み位置を調整。

MinGWとgcc

MinGW-5.1.6
gcc.exe (GCC) 3.4.5 (mingw-vista special r3)
MSYS 1.0

Linux(CentOS5.2)上のgcc, binutils:

gcc-4.1.2-42.el5
libgcc-4.1.2-42.el5
binutils-2.17.50.0.6-6.el5

参考資料

書籍:

Webページ:



プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2010-03-27 17:19:17
md5:7eee8d1800099af1a7ae90f56bf35e82
sha1:1d037cbe630b2f65be12e928076dccab16862a0b

日記/2010/03/27/「x86呼び出し規約」シリーズ一旦完結。  

所有者: msakamoto-sf    作成日: 2010-03-27 16:53:16
カテゴリ:

"thiscall"まで一通り出揃ったので、x86の呼び出し規約シリーズは一旦完結となります。
同じ呼び出し規約でも、コンパイラによって微妙なクセがあったりして面白かったです。特にGCCで、ESPをその関数内で使うであろう最小値まで最初にSUBしてしまって、それによりcallerスタッククリーン系でもESPを戻さずに済むよう調整していたのが印象的です。他にもOpenWatcomのデフォルトのwatcall呼び出し規約が独自路線で面白い。

ちなみに、こんなに呼び出し規約が乱立してるのってx86(32bit)ならではみたいです。実はPowerPCやARM、MIPSなど他のCPUアーキテクチャでは、呼び出し規約がCPU側のドキュメントに載っているようです。つまりCPU側の仕様に含まれていると考えられます。そのせいか、各アーキテクチャ毎に1種類の呼び出し規約、みたいな形でシンプルになっているようです。まぁ他のCPUって汎用レジスタがx86(32bit)の倍以上はあるのばっかりなんで、引数は殆どレジスタ渡しになってるみたいですね。

この後は、引き続き4-5月も他に習い事が出来てしまってますので、スピードを一旦緩め、IBM PC 5150からの系譜やDOSの拡張メモリ(EMSやらXMSなど)について簡単にまとめていこうかと思います。本当はそっちが先だったんですが・・・DOSの拡張メモリを調べていく内にIBM PC 5150に突き当たってしまい、ROM BIOSが読めるのでじゃぁ0x7C00の謎も解いておこうか・・・ともの凄い寄り道をしてしまっている訳ですが。さらに何でDOSに今更・・・かというと、呼び出し規約でOpenWatcomやTurbo C++ 4.0Jでのパターンを確認しておきたかったのでFreeDOS環境を構築したのは良いのですが、あらためてDOSに触ると「あれ、EMSやらXMSってなんなんだっぺさ」と気になりだして。「はじめて読む486」にもEMSの話は出てきていますので。

それが終わったらまた軌道修正をかけます。大きく以下の4テーマを消化していく予定です。

  1. Windowsシステムのプログラミング消化
  2. Linux/UNIXプログラミング消化
  3. 実行可能イメージの歴史のまとめ
    1. "Linkers and Loaders"に載っているのであればそれ読んでお仕舞い!にしたいところ。
  4. バイナリ解析・デバッグ系消化

"Linkers and Loaders"、前から気にはなってるんですが・・・あんまり評判も良い方ではないので躊躇してるんですよね・・・。日本語訳版と、原著版、両方立ち読みできると良いんですが。

バイナリ解析やデバッグ系は実行ファイルのレイアウトや、OSの仕組みを良く理解していないと分かりづらい。なので一番最後がベターかも。実行可能イメージは、a.outやELF,COFFやOMF,PEなど実行ファイルのフォーマットについて調べる必要が出てくるが、それがOS上で展開される箇所についてはやはりOSの仕組みを理解していないと分かりづらい。ということで、こんな順序に。

もしかしたら、さらにこの前にアセンブラプログラミングについて色々お試しが入るかも・・・。

まだまだ長いなぁ。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-03-27 17:12:37
md5:94575439123acb11f6d2b3a9b4eab5aa
sha1:98e12df956488a4e8be402599f79bcd656396117