問題タブ [masm32]

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.

0 投票する
2 に答える
45329 参照

assembly - アセンブリ-.data、.code、およびレジスタ...?

それで今朝、私は組み立てについて混乱した質問を投稿しました、そして私はいくつかの素晴らしい本物の助けを受け取りました、それは本当に感謝しています。

そして今、私は組み立てを始め、それがどのように機能するかを理解し始めています。

私が理解していると思うことには、スタック、割り込み、バイナリ/ 16進数、そして一般的にほとんどの基本的な操作(jmp、push、movなど)が含まれます。

私が理解するのに苦労していて助けを求めている概念は以下のとおりです-あなたが以下のいずれかに取り組むことができればそれは大きな助けになるでしょう:

  1. .dataセクションで正確に何が起こっていますか?これらの変数は宣言していますか?
  2. もしそうなら、後でコードセクションで変数を宣言できますか?そうでない場合は、なぜですか?もしそうなら、どのように、そしてなぜデータセクションを使用するのですか?
  3. レジスターとは何ですか?変数と比較してどうですか?つまり、それが小さな情報を格納する場所であることを知っています...しかし、それは私には変数のように聞こえます。
  4. 配列を作成するにはどうすればよいですか?私はこれが一種のランダムに見えることを知っていますが、私はこのようなことをどのように行うのか興味があります。
  5. 各レジスターの用途に関する一般的な慣行のリストはどこかにありますか?私はまだ完全には理解していませんが、たとえば、プロシージャからの「戻り値」を格納するために特定のレジスタを使用する必要があると言う人がいます-そのようなプラクティスの包括的または少なくとも有益なリストはありますか?
  6. 私がアセンブリを学んでいる理由の1つは、高水準コードの背後で何が起こっているのかをよりよく理解することです。そのことを念頭に置いて、C ++でプログラミングしているときは、スタックとヒープについてよく考えます。アセンブリでは、スタックが何であるかを知っています-「ヒープ」はどこにありますか?

いくつかの情報:私はIDEとしてWinAsmでmasm32を使用しており、Windows7で作業しています。c++/javaなどの高級言語でのプログラミングの経験が豊富です。


編集:いつものように非常に有益な、みんなの助けに感謝します!素晴らしいもの!最後にもう1つ、スタックポインタとベースポインタ、またはESPとEBPの違いは何でしょうか。誰かが私を助けることができますか?

編集:私は今それを手に入れていると思います...ESPは常にスタックの一番上を指します。ただし、EBPは好きな場所に向けることができます。ESPは自動的に処理されますが、EBPを使用して好きなことを行うことができます。例えば:

このシナリオでは、EBPは4を保持しているアドレスを指しますが、ESPは2を保持しているアドレスを指します。

実際のアプリケーションでは、6、5、および4が関数の引数である可能性がありますが、3および2はその関数内のローカル変数である可能性があります。

0 投票する
3 に答える
3196 参照

assembly - MASM/MASM64 からコンパイル時にアーキテクチャを検出する

ターゲット アーキテクチャが I386 または AMD64 であるかどうかを ASM ソース ファイルからコンパイル時に検出するにはどうすればよいですか?

masm(ml.exe)/masm64(ml64.exe) を使用して file32.asm と file64.asm をアセンブルしています。アーキテクチャに応じて、file32.asm または file64.asm のいずれかを含む単一のファイル file.asm を作成すると便利です。理想的には、次のようなものを書きたいと思います。

また、必要に応じて、ml.exe と ml64.exe を別のコマンド ライン オプションで実行できます。

ありがとう!

0 投票する
2 に答える
2944 参照

visual-c++ - VC++ によって生成されたアセンブリ出力をコンパイルしますか?

単純な hello world C プログラムがあり、/FA でコンパイルします。その結果、コンパイラは対応するアセンブリ リストも生成します。ここで、masm/link を使用して、生成された .asm リストから実行可能ファイルをアセンブルしたいと考えています。

次のコマンド ラインでは、3 つのリンカ エラーが発生します。

C ランタイム関数が以前に生成されたオブジェクト ファイルにリンクされていなかったことを示します。

asm_test.obj : エラー LNK2001: 未解決の外部シンボル @__security_check_cookie@4

生成されたアセンブリ リストは次のとおりです。

最新のmasm32バージョン(6.14.8444)を使用しています。

更新

Cogwheel の提案に従って、INCLUDELIB msvcrt.libasm ソースに を含めました。プログラムがコンパイルされ、実行可能ファイルが作成されますが、リンカーは警告を生成します。

msvcrt.lib(crtmanifestrtm.obj): 警告 LNK4044: 認識されないオプション "manifestdependency:type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b'"; 無視された

実行可能ファイルを起動すると、C ランタイムで次のエラーが生成されます。

ランタイム エラー: R6034 アプリケーションが C ランタイム ライブラリを正しくロードしようとしました

0 投票する
1 に答える
309 参照

assembly - 高レベル マクロが認識されない - 初心者 MASM

この MASM コードの何が問題になっていますか?

でエラーが発生し.endwます。私はそれを確認するためにいくつかのテストを実行しました。アセンブラーが教えてくれinvalid instruction operandsます。

お時間をいただきありがとうございます!

0 投票する
1 に答える
228 参照

sdk - TASM32 SDK をビルドしていますか?

Embarcadero Delphi 2010 (試用版) をダウンロードしました。tasm32 および関連するもの (ilink32、implib、impdef など) は引き続き使用できます。それでもヘッダー ファイルとインポート ライブラリが不足していますが、幸いなことに win2inc や implib などで解決できます。

最終結果は、TASM32 SDK と呼ぶことができます (MASM32 SDK と同様の方法で)。

Delphi は商用製品であることを考慮して、私はこの SDK を個人的な使用のみに使用する予定です (もちろん非商用)。

これは合法ですか?

0 投票する
2 に答える
7420 参照

assembly - A2004 MASM32 の問題

MASM32 アセンブラに問題があります

次のコードは、MASM32 チュートリアルからコピーした Hello World の例です。

アセンブルしようとすると、MASM32 は次のコメントとともに A2004 エラーをスローします。

誰でもそれで私を助けることができますか?このコードは TASM アセンブラーでは問題なく動作しましたが、今は MASM32 を使用する必要があり、以前に TASM で動作することが証明されたアセンブリ コードでこの A2004 エラーが発生しています。

これが関連する場合、私は Win7 OS を実行している 32 ビット CPU を持っています。

ありがとう。

0 投票する
2 に答える
956 参照

c++ - MASM strとsubstr?

私は現在、asmでircボットをコーディングしています。これは、C ++で一度行ったことがあるので、発生するほとんどの問題を解決する方法を知っていますが、C ++で見られるようなsubstr()[*]関数が必要です。対応するPONG応答で応答できるように、PING要求からサーバー名を受け取るsubstr関数が必要です

しかし、MASMでそれを実行する方法がわかりません。マクロアセンブルと呼ばれるものを聞いたのですが、これらの関数ではsubstrがよく使用されているようです。

substr関数を機能させる方法を誰かが知っていますか?

[*] string substr ( size_t pos = 0, size_t n = npos )

これは私がC++でsubstr()関数を使用する方法です:

dataはサーバーから送信されるすべての情報を保持する文字列であり、SCHiMBotはサーバーとの通信に使用するクラスです。このコードは、コード化したボットから直接c&pされているため、完璧である必要があります。

0 投票する
1 に答える
241 参照

assembly - Windowsアセンブリの疑い-x86

マクロなしでWindowsアセンブリプログラムを作成しています。そこで、マクロを使用していたプログラムをダウンロードし、これを「純粋な」アセンブリコードに変換しています。

しかし、私はここで1つの問題に直面しています。わからないレーベル@@:と、わからなかったジャンプjne @Fがあります。これらの2つのシンボルは何ですか?

また、PostQuitMessageAPIの場合、メモリアドレスをハードコーディングすることもできます(WinXP 32ビットSP3英語の場合)が、DefWindowProcコンパイルするため、実行時に壊れます。誰かが理由を知っていますか?

サポート担当者に感謝します。

PS:私はmasm32を使用しています

0 投票する
2 に答える
2225 参照

assembly - MASM にエスケープ文字はありますか?

一重引用符で囲まれた文字列には二重引用符を含めることができ、その逆も可能であることは知っていますが、文字列に両方を含めることはできますか? たとえば、次の文字列です。