VCで64bitの静的配列にアクセスするコードを調べてみた。
#include <math.h>

volatile char str[1024];
volatile char c;

main(int argc, char *argv[])
{
int idx;

idx = (int)(rand() * 1024);
c = str[idx];
}

これの配列アクセス部分が
; 11 : c = str[idx];

0001c 48 63 44 24 20 movsxd rax, DWORD PTR idx$[rsp]
00021 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:str
00028 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0002c 88 05 00 00 00
00 mov BYTE PTR c, al

00028は[rcx+rax]で配列アクセスしてる
そして、00021と0002cはrip相対アドレッシングだよね?(エンコードは自信ないので)