問題タブ [word-size]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - プロセッサのワード サイズを決定する
CPU のワード サイズはどのように決定すればよいですか? 私が正しいことを理解していればint
、1つの単語である必要がありますよね? 私が正しいかどうかはわかりません。
では、プロセッサのワードサイズを決定するには、印刷するだけsizeof(int)
で十分でしょうか?
c - LP64、LLP64およびIL32移行
80年代の16ビットから32ビットへの移行中は、16int
ビットまたは32ビットのいずれかでした。現在の64ビット遷移の命名法を使用すると、ILP32およびLP32マシンがかなり均等に普及していることを理解しています。当時、int
特定のアーキテクチャでは常にレジスタまたはポインタの幅に従い、long
32ビットのままであることが理解されていたと思います。
25年早送りすると、LP64がかなり主流であることがわかりますが、64ビットプラットフォームに遭遇するまで[2007年にデスクトップLinuxを発見しました:)]、私は常にIP64が次の論理的なステップになると期待していました。
- これ(LP64)は64ビットで予想される進化でしたか?
char <= short <= int <= long
この関係は、私たちが残した各プラットフォームに整数型を固定するというこの新しいスキームにどのように適合しますか?- これらの移行スキームは、さまざまなプラットフォームでの(選択した
{l,u}case
)WORD
/の使用とどのように関連していますか?DWORD
INT
Windowsの一部の領域には、16ビットのフォームがまだ含まれています。WindowsはLLP64から成長しますか、それとも手遅れですか?- 32ビット移行中ではなく、なぜ
int
今回取り残されることになったのですか?
haskell - Int32 と Int64 にはどのようなパフォーマンスが期待できますか?
このような pprograms をよく見かけます。ここInt64
で、32 ビット プラットフォームでは絶対的なパフォーマンス キラーです。私の質問は今です:
タスク (私の場合は RNG) に特定の語長が必要な場合、Int64
64 ビット プラットフォームで効率的ですか、それとも C 呼び出しを使用しますか? Int64
そして、を に変換するのはどのくらい効率的Int
ですか?
c - Cで列挙型のサイズを指定する
すでにこの関連する質問を読んでいますが、もう少し具体的なものを探していました。
- 列挙型の幅をコンパイラに具体的に伝える方法はありますか?
- もしそうなら、どのようにしますか?C# で指定する方法を知っています。Cでも同様に行われますか?
- やる価値はありますか?列挙型の値が関数に渡されるとき、サイズに
int
関わらず値として渡されますか?
c - sizeof は C の型のバイト数またはオクテット数を返しますか?
簡単に言えば、C とバリアント (その仮想マシンでの wuss java とは異なります) では、さまざまなターゲットのプリミティブ型のサイズが大きく異なる可能性があり、で定義されている固定幅の型を使用しない限り、実際には保証はありませんstdint.h
。それらをサポートするために。
とにかく仮説的に(ほとんどの最新のマシンではバイトはオクテットであるため、ネットワーキングの目的で(ASCII)と想定しているため)sizeofはデータ型のサイズをバイト単位またはオクテット単位で返しますか?
assembly - 2rd、oword、yword オペランドのサイズは?
NASM / YASM マニュアルtword
で使用されている、oword
およびyword
オペランドのサイズは? それに関連して、これらの名前にはトリックや根底にあるアイデアはありますか? より大きなワードサイズに論理名を付ける方法はありますか?
ワード サイズはシステム間で異なる場合がありますが、NASMword
は 2 バイトで、dword
その 2 倍 (4 バイト) でqword
、クワッド ワード (8 バイト) ですが、...tword
トリプルワード(6 バイト) ですか? そしてoword
、yword
私はもっともらしい意味さえ考えられません。
おそらく簡単な質問ですが、答えが見つかりませんでした。NASM および YASM のマニュアルでは、これらのサイズは説明されておらず、 、 、 、 、疑似命令でも説明さDQ
れDT
てDY
いRESQ
ませREST
んRESY
。MASMが同様のシステムを使用していることをどこかで読みましたが、それについても何も見つかりませんでした.
編集:回答に基づいて、これは完全なリストです:
- 1 バイト (8 ビット):
byte
、DB
、RESB
- 2 バイト (16 ビット):
word
、DW
、RESW
- 4 バイト (32 ビット):
dword
、DD
、RESD
- 8 バイト (64 ビット):
qword
、DQ
、RESQ
- 10 バイト (80 ビット):
tword
、DT
、REST
- 16 バイト (128ビット) :
oword
、、、、DO
RESO
DDQ
RESDQ
- 32 バイト (256 ビット):
yword
、DY
、RESY
- 64 バイト (512 ビット):
zword
、DZ
、RESZ
c - 構造体のサイズ、パディング、そして未来
次のプログラムを検討してください
MinGWを使用してコンパイルすると、32ビットシステムと64ビットシステムの両方でsizeof(Foo)= 12とsizeof(Bar)= 12が得られます(16ビット環境ではsizeof(Bar)= 10だと思います)。将来的には、これらの構造のサイズが16になり、64ビット環境での適合性が向上する可能性がありますか?
構造体をファイルに保存していますが、将来的に回避策を追加したくありません。運命の物の構造のレイアウトはおそらく1993年には良い選択でしたが、今日はそうではありませんでした。
assembly - 奇数アドレス、ハーフ ワードを読み取りますか?
多くの CPU アーキテクチャ (ARM、PPC) は奇数アドレスを読み取ることができないが、強制すると例外が生成されることはよく知られています。(x86)
しかし、フル 32 ビット (またはそれ以上!) のワードしかアドレス指定できない CPU はありますか? つまり、16 ビット ワードをアドレス指定できないのでしょうか。おそらくamd64?
ポータブルでありながら高速な C の malloc のようなアロケータを作成しようとしており、メモリ アクセスを適切に調整したいと考えています。現在、私はARM、i386、およびamd64をターゲットにしています。これらの特性を調べることはできましたが、目を光らせておくとよいと思いました。
私の質問をする具体的な方法は次のようになると思います。
アドレス 0x2 から 16 ビットを読み取る CPU はありますか (0 に近いアドレス範囲が一般的に有効であるという議論のために、一部の CPU は最初のページを使用しないことがわかっています)、バス エラーが発生します。ここで、CPU = MIPS、ARM、x86、amd64、68k、88000、SH、OpenRISC、Sparc、PPC、Cell/SPE のいずれか?
(ちなみに、私はこの全体を C プログラマーの観点から見ています。したがって、C コンパイラーは、char や uint32_t などの通常の C 型をすべて提供してくれると思います。)
assembly - nasm のスタックでの繰り返し加算による乗算
実装の結果に問題があります。たどってみると、そうらしい。ただし、間違った結果が得られます。99 と 99 を入力すると 5318 になりますが、9801 になるはずです。
ところで、プログラムは 2 つの 2 桁の数値を受け入れ、乗数 (2 番目の入力) の値を満たすまで繰り返し被乗数 (最初の入力) を追加して乗算します。
問題を特定しようとしましたが、単語サイズの除算を使用するとランダムな値が得られるようです。word-size は最大 65,656 ですが、255 を超えると結果が壊れます。なぜですか?
繰り返し加算操作による乗算である最初のオプションに注意してください。
少しの助けをいただければ幸いです。
size - 古い CDC メインフレーム PRU をバイトに変換する方法は?
Seymour Cray によって開発された Kronos オペレーティング システムを実行している古い CDC 6600 は、60 ビットのメインフレームだったと思います。ストレージの単位を PRU と呼んでいました。PRU とは何ですか? また、どのようにバイトに変換できますか? たとえば、1970 年代後半に 200,000 PRU を保持していたディスク ストレージ デバイスを読みました。これが現代ではどのくらいの大きさなのか、興味津々です。