ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 08:53

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - 64ビットコンパイラの行方
作成者 メッセージ
  記事の件名:   引用付きで返信する
悩みますね。素人がみて、はっきり分かるのはグラフィックがベストです。
仮想メモリを使うにしても、実行した環境がRAIDを使ってないと遅くなるし

できるかどうか分からないけど案はある。

書き込み可能な仮想ドライブ for CD,DVD,BD-R,HD DVD
世界中探して確か無かったような、焼く前に仮想ドライブに焼いて
テストできるソフトなんてあったら便利。演算部分は確実に64
ビット化できると思うし、多くの人にActiveBasicの凄さを実感して
もらえると思う。焼きソフトを使ってベンチできる点に脱帽するぞ
投稿記事 Posted: 2006年1月08日(日) 10:44
  記事の件名:  64ビット技術を用いたサンプル  引用付きで返信する
サンプルプログラムの製作について悩んでいるので、アドバイス願います。

現段階ではネット上での配布は行っていない64ビット版ActiveBasicですが、そのコンパイラの質は、32ビットのそれよりも断然に良いんです。なんとかして、華やかなベンチマークアプリを製作しようとたくらんでいるところなのですが・・・

・大容量(4GB以上)のデータ(または仮想メモリ)を扱う
・64ビット整数型を利用したベンチマーク
・実数演算を利用したベンチマーク(SSE2を採用しているので、高速になっているハズ…)
・その他、x64技術を用いたベンチマーク

私が高校生の頃(AB2の頃)に、ハレー彗星の軌道計算プログラムを書いたユーザーさんがいらっしゃいましたが、一般人が見て、オォ~と言いたくなるような64ビット独特のサンプルは無いですかね~。

32/64で比較ができるサンプルなんかは尚宜しいのですが…(そんなに都合いいのはあるのかな~)
投稿記事 Posted: 2006年1月08日(日) 01:43
  記事の件名:   引用付きで返信する
 さてVersion 4.13が公開されたので早速ダウンロードしてみました。
もちろん気になるのはapi_window.sbpです。どうなっているか見てみると,
Win64ではGetWindowLongのエイリアスにGetWindowLongPtrAを指定しているという目から鱗でした。

 なるほどこれなら今までさんざんGetWindowLongを使っていたABのプログラムもそのままWin64へ移せますね。
これは一本取られました。
投稿記事 Posted: 2005年12月27日(火) 10:14
  記事の件名:   引用付きで返信する
引用:
 Win64APIもLLP64で,極力Win32と変らないようになっているようです。
C/C++用のWinAPIのヘッダーはintもlongも32bitであることを前提にしています。
Win64では64bitになるべき場合は全て(U)LONG_PTR類あるいはこれらからのTypeDefになっています。
(WPARAM/LPARAMやSIZE_Tなど)
ありがとうございます。
16bit環境ではintのサイズは2バイト、という話を聞いたことがあったので、ちょっと心配になってしまっていましたが。
DLLなどの問題については、ABが64bitに対応したときにでも確認してみます(ヘッダファイルを見ればある程度の情報は得られると思いますので)。
投稿記事 Posted: 2005年12月26日(月) 20:41
  記事の件名:  Re: 整数型のサイズは?  引用付きで返信する
 Win64APIもLLP64で,極力Win32と変らないようになっているようです。
C/C++用のWinAPIのヘッダーはintもlongも32bitであることを前提にしています。
Win64では64bitになるべき場合は全て(U)LONG_PTR類あるいはこれらからのTypeDefになっています。
(WPARAM/LPARAMやSIZE_Tなど)

 x64での呼び出し規約では,引数・戻り値での32bit整数は
64bitに拡張されて渡されるのでLP64やILP64でも問題なさそうです。

 長々と書きましたが結局のところ必要な箇所で(U)LONG_PTRが使われていれば,
ソースコードは大して問題にならないのではないでしょうか。

> ※それと、やはりDLL名も user64.dll kernel64.dll のようになると思えばよいのでしょうか?
これも問題ですが,Declareの殆どはABのインクルードファイルの中にあるのでユーザーへの影響は少ないだろうだと思います。
というのが理想ですが,実際にはDeclareの山になることも多いですしね。
Win64も持っていないので私にはわかりません。是非知りたいです。
投稿記事 Posted: 2005年12月26日(月) 19:25
  記事の件名:  整数型のサイズは?  引用付きで返信する
64ビットネタに便乗して。

http://www.itmedia.co.jp/enterprise/art ... ws006.html
↑によると、64ビット環境でも int や long の類は32ビットに据え置かれる可能性が高いといわれていますが、
Win64APIなどではこの辺の扱いがどうなるのかが気になります(上の情報はCの処理系に関することなので)。
特に、独自にAPIを定義している場合は型を変更すべきなのかどうかが重要になってきますので…。
※それと、やはりDLL名も user64.dll kernel64.dll のようになると思えばよいのでしょうか?
投稿記事 Posted: 2005年12月26日(月) 16:30
  記事の件名:  GetWindowLongPtrの類  引用付きで返信する
どこに投稿すべきか迷いましたが,64bitネタということでここを選びました。

GetWindowLongなどをLONG_PTRにして64bitにも対応した
GetWindowLongPtrなどの宣言がまだなされていないので,私が作ってみました。
ぜひ次のABバージョンアップ時に収録してくださいという狙いです。

既に作られていたならお騒がせしました。
投稿記事 Posted: 2005年12月26日(月) 11:40
  記事の件名:   引用付きで返信する
> 64 ビット リモート デバッグ
この話もVisual StudioのIDEは32bitプログラムですがデバッガは64bitプログラムですよと書かれているように思います。

ActiveBasicも同じようにデバッガを64bit化しないといけないのかもしれません。
これだけは頑張ってくださいとしか言いようがないです……。

#ところで64bitプログラムが32bitスレッドに対してGetThreadContextを実行するとどうなるのか気になります。
投稿記事 Posted: 2005年10月29日(土) 09:07
  記事の件名:   引用付きで返信する
引用:
64 ビット リモート デバッグ
Visual Studio を WoW64 の下で実行している場合は、ローカル コンピュータ上で実行している 64 ビット アプリケーションをデバッグできます。Visual Studio を WoW64 の下で実行し、アプリケーションを 64 ビット Windows 上で実行している場合でも、デバッグは透過的です。リモート コンピュータで実行している 64 ビット アプリケーションをデバッグするには、"Visual Studio 2005 Remote Debugger" というラベルの付いた CD に含まれている 64 ビット リモート デバッガをインストールする必要があります。このリモート デバッガをインストールするには、リモート コンピュータ上でこの CD に含まれているセットアップ プログラムを実行し、セットアップ ダイアログ ボックスに表示される指示に従います。
MSにはこういう情報もありました。どっちなんだ・・・


↓キャッシュですが、ご覧あれf(^^;;;
http://66.102.7.104/search?q=cache:TdW7 ... in64&hl=ja
投稿記事 Posted: 2005年10月29日(土) 01:12
  記事の件名:   引用付きで返信する
引用:
Can not be used to debug native 64-bit applications
これが全てを言い表している気がしてなりません。

ところでWin32にはジェネリックサンクというものがあり、DLLを単位として16bit/32bitのコードを1プロセスに共存させることもできたようですが、
Win64には残念ながらそういったものはないようですね。
投稿記事 Posted: 2005年10月29日(土) 00:32
  記事の件名:   引用付きで返信する
なんか突然、ディープな内容で申し訳ないですm(__)m

http://d.hatena.ne.jp/dai_optimistic/20051028

ブログにも書いてある通り、GetThreadContextが正常に働かず、デバッガが対象スレッドのレジスタ情報を取得できない状況におかれています。状況は下記の通り。

・デバッガはBasicCompiler.exeが提供している。Win32アプリである。
・デバッガはWOW64の機構を利用して稼動している
・デバッグ対象のプログラムはネイティブな64ビットアプリである。
・デバッガはGetThreadContextというAPI関数を呼び出して対象スレッドのレジスタ情報を取得する


久々に一日中、同じ問題で頭を抱えてみました。大きな壁ですな。片っ端から情報を読み漁りましたが、この手法が無理であるとはどこにも書いておりませんでした。


まぁ、しいて言えば、MSのサイト上にあったどこだかのプレゼン資料だけです。

http://download.microsoft.com/download/ ... ec2004.ppt


ここには、こう記してあります。
引用:
WoW64 Debugging


GetThreadContext() and SetThreadContext() works if the target process of the same type

Use user-mode 32-bit debugger to debug WoW64 applications

Debug as if you are running on a native 32-bit Windows OS

Visual C++ 6.0

User mode debuggers (e.g. ntsd.exe)

Or any other 32-bit debugger package

View only 32-bit loaded modules

Can not be used to debug native 64-bit applications

Use user-mode 64-bit debugger to debug inside WoW64’s 64-bit code

WoW64 debugger extensions – comes with Microsoft debugging tools

Allows to switch between 32-bit and 64-bit modes using !sw command

View all loaded modules (32-bit and 64-bit)

Can debug WoW64 as well as native 64-bit applications

なんか、直訳するとWin32デバッガからはWin64アプリの情報をGetThreadContextできないぞみたいなことが書いてあるようにとれます。

英語が得意な方、この文章の翻訳を、わかりやすくお願いしたいです。

また、この件に関する情報、どんな些細なことでもかまいませんので、アドバイスをいただけると助かります。

たぶん、「できない」のであれば、新しくネイティブ64なデバッガを作ることになりますので(こうなると、スケジュール的にかなり厳しいのですが…)
投稿記事 Posted: 2005年10月28日(金) 21:11
  記事の件名:   引用付きで返信する
最近知ったんですけどWindows XP 64bitで64bitモードのときはFPUレジスタの退避が行われないので実質的に使えないらしいです。
(32bitプログラムは平気らしい)

そこでどうするかというと浮動小数点演算は全てSSE/SSE2を使うことになるのですが、
これにはSqrtや指数・三角関数などといった物はないので自分で計算しないといけないということのようです。
つまり実質的には今のABのようにライブラリがそういった計算のコードを保持するということになりますね。

するとここで提案したようなインラインアセンブラや組み込み関数で直接FPU命令でSqrtなどを計算させれば高速になるという話は駄目になってしまったということです。
http://www.discoversoft.net/forum/viewtopic.php?t=37
投稿記事 Posted: 2005年6月15日(水) 07:48
  記事の件名:   引用付きで返信する
ITmedia エンタープライズ:64ビットプログラミングのポイント
http://www.itmedia.co.jp/enterprise/art ... ws003.html

64ビットプログラミングについての記事があったので紹介します。
投稿記事 Posted: 2005年6月14日(火) 18:58
  記事の件名:  Re: 64ビットコンパイラの行方  引用付きで返信する
ところでVCやBCCでは32ビットへのコンパイル時には32ビット、64ビットへのコンパイル時には64ビットになる整数型のtypedef
INT_PTRなどが存在していますがこれはどうでしょう。
とりあえず次の版にでも用意しませんか?
あとSetWindowLongPtrなどの宣言も同時にほしいですね。
(実際にはAlias "SetWindowLong"ですが)
投稿記事 Posted: 2005年6月02日(木) 21:50
  記事の件名:  64ビットコンパイラの行方  引用付きで返信する
引用:
今現在64ビットの命令規格は様々なものがあります。
例えば、Itanium IA-64, AMD64, EM64T(AMD64との互換)などが主力でしょうか。
近い将来、少なくとも2年以内に64ビットの波が一般ユーザーの元にも押し寄せると僕は踏んでいますが、ABはどの規格に対応するのでしょうか?
まさか全部ってことはないでしょうw
それとも、未決定事項ですか?
欲を言えば、全部に対応したいとなんですが…(汗)。まぁまずはx64に対応していきたいと考えています。x64といえば、IA-32e(EM64T)、AMD64ですね。

・IA-32e … "Intel Pentium4 6xx" 及び "Intel Xeon"
・AMD64 … "AMD Athron64" 及び "AMD Opteron"

互換性とか色々あって、名前だけでもややこしいんですが、まずは"Intel Pentium4 6xx"と"AMD Athron64"にターゲットを絞る予定です。デュアルコア対応とかはその後ですね。そこまでが一段落したところで"IA-64"を見据えていきたいと思います。"Intel Itanium" なんかがエンドユーザーに渡るのはもう少し先のような感じですし。

ここまでくると、ライブラリ開発なんかを、できればユーザーさんと一緒にやっていきたいところです。Ver4.0の時点で、私自身、仕事量の面、スケジュールの面から無理が生じ始めているので、64ビットコンパイラ開発ウンヌンと言うのと同時に、パワーユーザーさんには開発者側の立場に回っていただけるような環境作りをしていかなくちゃいけませんね。

コンパイラ開発に力を注ぐとライブラリ郡が作れず…ライブラリ郡に力を注ぐとコンパイラのコード内容が頭から消えてしまったりと…こういう低レベルなことはやっちゃいられないです。
投稿記事 Posted: 2005年6月02日(木) 17:54

全ての表示時間は UTC+09:00 です


ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean