■
gasにおけるメモリ参照のメモ
AT&T記法であるgasでは以下のように書く
segment:disp(base, index, scale)
これはintel記法では
segment:[base + index*scale + disp]
※scaleは1,2,4,8の値を取れる
となる。
例をあげると
%gs:4(%edi, %eax, 4) = gs:[edi + eax*4 + 4] -4(%ebp) = [ebp - 4] ( ss:[ebp-4]。ebpはデフォルトでssセグメントを使う) 0x90000(,1) = [0x90000] %gs:foo = gs:foo その他 lcall $segment,$offset lret $stck-adj