ウォンツテック

そでやまのーと

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