在内存寻址中使用偏移量的两种方法

问题描述

对于访问数组,我看到了以下两个经常使用的符号:

# Addressing in the general form of: 
#  address_or_offset(%base_or_offset,%index,scale)

# (1) using a label,which resolves to an address
movzwq myarray(,%rdi,2),%rbx           # 0x400078

# (2) using an offset based on a register,usually %rbp
movzwq -8(%rbp,%rcx

第一种形式使用address(offset,index,scale)表示法,第二种形式使用offset(base,scale)表示法。我的问题是,使用第一个表示法并包括一个索引寄存器,是否真的可行:

movzwq myarray(%r11,%rbx

Of是从未使用过的,并且在使用该address(,scale)表示法时总是空白(就像第一个示例一样)?

最后,offset/baseaddress/offset只是做同一件事的两种方式,也就是说,它允许通过在第一种情况下与寄存器进行偏移以及与寄存器进行偏移来到达起始存储位置。地址/标签在第二种情况下?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...