加载有效地址指令leap

指令描述

leap 源操作数S, 目标操作数D

作用:
拷贝源操作数表示的有效地址到目标操作数,即D\leftarrow \&S

注意:

  • 目标操作数必须是寄存器

示例

源文件scale.c

long scale(long x, long y, long z)
{
    long t = x + 4 * y + 12 * z;
    return t;
}

汇编码

leaq    (%rdi,%rsi,4), %rcx
leaq    (%rdx,%rdx,2), %rax
salq    $2, %rax
addq    %rcx, %rax
ret

源文件scale3.c

long scale3(long x, long y, long z)
{
    long t = 10 * y + z + y * x;
    return t;
}

汇编码

leaq    (%rsi,%rsi,4), %rcx
addq    %rcx, %rcx
addq    %rdx, %rcx
imulq   %rdi, %rsi
leaq    (%rcx,%rsi), %rax
ret
问题3.6.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。