hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
64bit 整数を再現 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

Module

hsp3.png

64bit 整数再現モジュール

64bit 整数(LONGLONG/_int64)型を提供するプラグインとしては「青い葉っぱ」さんの longint がありますがプラグインを使用せずに標準機能だけで LONGLONG 型を再現しようというモジュールです。

モジュール

+  mod_llong.as

サンプル

+  sample1

注意事項など

  1. 現在は四則演算の内、「足し算」と「引き算」のみしか使用できません
    1. 「かけ算」は使用できません
    2. 「割り算」は使用できません
    3. その他の計算はできません
  2. double 型を無理矢理、裏技的に使用しています
    1. 仮想 LONGLONG 型を作成するには MAKELONGLONG 関数を使用してください
    2. 仮想 LONGLONG 型から上位 32bit(int) を取得するには HILONG 関数を使用してください
    3. 仮想 LONGLONG 型から下位 32bit(int) を取得するには LOLONG 関数を使用してください
    4. 文字列に変換する場合は以下のようにしてください
      1. 64bit 符号なし整数: strf("%I64u", <LONGLONG>)
      2. 64bit 符号あり整数: strf("%I64d", <LONGLONG>)
      3. 64bit 符号あり整数: strf("%I64i", <LONGLONG>) ; 上記と同じ
      4. 64bit 16 進数表示: strf("%I64x", <LONGLONG>) ; 小文字
      5. 64bit 16 進数表示: strf("%I64X", <LONGLONG>) ; 大文字
  3. 自己責任で使用してください
  4. 結局、プラグイン(longint)を使用した方が簡単で早いです (^_^;
  • ntdll.dll に RtlLargeIntegerAdd?, RtlLargeIntegerSubtract?, _allmul, _alldiv, _allrem, _aulldiv, _aullrem など(他多数)の関数がある模様
    • 上記関数は ntdll.dll が WinNT 系専用であるため Win9x 系では動作しない可能性あり
    • 上記関数の戻り値がうまく取得できない(HSP の仕様?)
使用した命令結果
#uselib/#cfunc×
#uselib/#func×
#uselib/#func/varptr/callfunc×

別バージョン

API もバイナリコード埋め込みもなし。

+  anotherversion

プラグイン使ったほうが楽なのは確かです。 -- naznyark?

コメント

  • あ、これはすごいですね。こちらの方が簡単かな。モジュールのみで実現させるのはプラグインより配布時に楽とかありますが、まあ元も子もない言い方をすればそれでもプラグイン使った方が簡単なんですよね。どちらかというと、これは単なる実験みたいな感じで実用には乏しいかも。 -- Irisawa 2006-10-25 (水) 01:33:05
  • プラグインによる拡張なら拡張変数型を他の変数型と同じように使えますからね。
    これは実験というよりアルゴリズム学習用かな。
    とりあえずここで使っているアルゴリズムでも64ビットより大きなビット数の整数処理に(基本的には)そのまま使用できますから。
    (使い勝手と速度を無視すれば longint型相当のものも作成できます。) -- naznyark? 2006-10-25 (水) 01:49:55
  • それと新版アップ。不具合が無ければ完成品。 -- naznyark? 2006-10-25 (水) 01:49:55
  • win95系では、kernel32.dllに RtlLargeIntegerAdd?RtlLargeIntegerSubtract?などがあるようです。戻り値が64bitだとHSPではうまく扱えないかも。 -- つくね? 2008-10-20 (月) 18:36:17

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル:
filemod_llong_b_20061024.hsp
450件 [詳細]
filemod_llong.as
428件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2013-03-10 (日) 12:59:38 (273d)