アセンブリが初めてで、インラインアセンブリを使用してグラフ用の単純な関数を実装することにしました。コンストラクタは、隣接行列のすべての要素を0に初期化するはずですが、私は私がやったことを理解していない、間違った ビジュアルスタジオのインラインアセンブリに関する問題
struct graph {
int el[MAX_V][MAX_V];
int noVert;
int noEdges;
bool directed;
graph() {
_asm {
mov ebx, 0
mov esi, MAX_V
mov edi, this
START_L1:
cmp ebx, MAX_V
je END_L1
mov ecx, 0
START_L2:
cmp ecx, MAX_V
je END_L2
mov eax, ebx
imul esi
add eax, ecx
mov [edi + eax*4], dword ptr 0
inc ecx
jmp START_L2;
END_L2:
inc ebx
jmp START_L1
END_L1:
}
}
}
私はこの命令が実行された後、私は更新していel
配列のint型の要素が非ゼロの値が含まれていることを見つけるデバッガを使用
mov [edi + eax*4], dword ptr 0
なぜ私はゲッティですこの命令の後にel
配列に配置された非ゼロのint値?私はゼロに設定されるように更新しているインデックスの整数を期待しています。
[動作しません](http://meta.stackexchange.com/q/147616/333362)? – wally
それは動作しません、デバッガでメモリのいくつかの部分をいくつかのランダム変数に置き換えて、それはそれです –
それは何をすべきですか?問題を再現するのに十分な情報を投稿してください。何かをコピーしてビジュアルスタジオに貼り付けることができます。コンパイルとデバッグは、あなたが何を期待しているのか、何を得ているのかで、この質問を簡単に答えることができます。 – wally