いくつかのアセンブリコードを実行していますが、コード行が何をするのか理解できません。コードは次のとおりです。
leaq 0(,%rax,4), %rdx
基本lea
的には一種のmov
命令ですが、アドレスを移動するだけです。したがって、何かのアドレスをに移動します%rdx
(%rdx
スタック上の何かに「ポイント」を作成します)。スタック上で何%rax
を指しているのかはわかっています-28(%rbp)
が(たとえば)、答えを得るためにそれを4で乗算する方法に混乱しています。%rdx
指しますか4*(-28) = -112(%rbp)
?
ありがとう!
編集:文脈上、次のコードがこの命令の前にあります:
pushq %rbp
movq %rsp, %rbp
movl %esi, -28(%rbp)
movl -28(%rbp), %eax
cltq
leaq 0(,%rax,4), %rdx