アセンブリでポインターを使用する方法を理解しようとしています。内部に関するいくつかのチュートリアルを読んで、いくつかの概念を理解したと思います。しかし、試してみると、うまくいきました。以下は、C を ASM に変換する試みです。
ハ
const char *s = "foo";
unsigned z = *(unsigned*)s;
if(!(z & 0xFF))
do_something();
if(!(z & 0xFFFF))
do_b_something();
(これは完全なコードではありませんが、単語チェックであるため、0xFF0000、0xF000000 をそれぞれチェックする 2 つの stmts があります。
ASM:
mov ebp,str
mov eax,ebp
mov eax,[eax]
and eax,0xFF
cmp eax,0
je etc
mov eax,[eax]
and eax,0xFFFF
cmp eax,0
je etc
セグフォルトを返します。
そして試してみてください:
mov eax,dword ptr [eax]
これは gcc コンパイラによって生成され、他のアセンブリ コードで確認できます。
invalid symbol
FASM アセンブラー上。FASM で実際にサポートされていないか、何か不足していますか?