でDWORDと同じWinAPIの中で定義されたDWORDです:はWinAPIので組み立て
typedef unsigned long DWORD;
私はDWORD、WORD ...は関係なく、int型、unsigned long型のために、コンピュータでの基本的なデータタイプだと思います...それは最終的にアセンブリでDWORDに変換されます、なぜそれはここで符号なしの長さに変換する必要がありますか? DWORDをそのまま使用することはできませんか?
でDWORDと同じWinAPIの中で定義されたDWORDです:はWinAPIので組み立て
typedef unsigned long DWORD;
私はDWORD、WORD ...は関係なく、int型、unsigned long型のために、コンピュータでの基本的なデータタイプだと思います...それは最終的にアセンブリでDWORDに変換されます、なぜそれはここで符号なしの長さに変換する必要がありますか? DWORDをそのまま使用することはできませんか?
DWORDはどのようなものでも定義されています(アセンブリでは特定の幅に自動変換されません)。このtypedefは、WinAPIインターフェイスがすべてDWORDが使用されているどこでもunsigned longで定義されているため必要です。 IOWでは、APIで作業するにはこの定義が必要です。
他の質問にお答えします。この答えは「いいえ、DWORDは定義なしでは使用できません。コンパイラーの組み込み型ではありません。 DWORDの定義は、Win32 APIのために固定されている
:x86命令セットに基づいて、Windows APIのInおよびアセンブリ言語でhttp://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx
、DWORDは32ビットのサイズの変数を指定します。だから、通常は同じサイズです。
タイプDWORD
は、コア言語の一部ではないため、C++で定義することなく使用できません。タイプ定義DWORD
は、コンパイラーとシステムアーキテクチャーに応じて調整する必要があります。どうやら、あなたの設定では、タイプunsigned long
は32ビットなので、DWORDはunsigned long
と定義されています。
ほとんどのアセンブリ言語では、ワードは32ビットです。なぜなら、ワードは通常CPU上の「自然な」データ型であるからです。 x86は16ビットアーキテクチャの拡張版なので少し奇妙なので、ある単語は16ビットで、「ダブルワード」すなわちdwordは32です。 "ほとんどのアセンブリ言語"について言えません – jalf
まあ、私はNASM、MASM、TASMを知っています。ワードは従来の理由から16ビット、DWORDは32ビットを意味します。たとえば、DWORDは、Windows APIで修正されたのと同じ理由で、混乱の原因となるため修正されています。私はこれらが最も一般的に使用されている印象を受けていました。これは他のアセンブリ言語でも同様です。 – ddso
それらは私が別のアセンブリ言語と呼ぶものではありません。それらは異なるアセンブラですが、すべて同じ命令セットをターゲットにしています。 DWORDは命令セットでIntelによって定義されているため、それらはすべて同じことを意味するために 'DWORD 'を使用します。 MIPSまたはPowerPCまたはARM CPU用のアセンブラは、それらのCPUが同じように用語を定義していない限り、DWORDをまったく使用しないか、同じ意味で使用します。 – jalf