2
アセンブリで配列を単純に集計しようとしています。アセンブリ言語での配列アクセス
int main(){
int a[5] = {1, 2, 3, 4, 5};
int result;
_asm{
mov ecx, 5 ;set the counter for 5
mov eax, 0 ;zero eax
NXT: add eax, [esi*4+a] ;add array value
inc esi ;increase esi to read next value
LOOP NXT ;loop back to next
mov [result], eax ;mov eax into result
}
printf("result: %u",result);
かかわらず、配列の値が何であるかの、それは常に私は、Mac上で実行しようとしている2.
に合計します。
私が使用してコンパイルしています:
gcc -fasm-blocks -m32 -c sum.cpp
と
gcc -arch i386 -g -o sum sum.o
とのリンク、私はいろいろなことを試してみたが、私はそれが配列を合計するように見えることはできません。
ゼロに初期化されます。私はasmステートメントで 'mov [result]、esi'を実行するだけでこれをテストしました。 – lcs
@millsj、あなたはesiが0に設定されているのを_rely_すべきではありません。明示的にそれを強制する必要があります。 – paxdiablo
@paxdiabloが分かりやすいので、最初に行を追加して0に設定しましたが、出力に変更はありませんでしたが、それでも2を読みます。 – lcs