如何解决使用1,2,4,8大小的变量进行内存寻址
我有一个函数,希望将列表/数组的起始地址以及元素大小传递给它,并返回大小。类似,用伪代码:
int size(*start_addr,int (1,2,4 or 8) elem_size)
并且在汇编中能够运行包含以下指令的循环:
mov (%edi,%eax,4),%r8d
但是,我希望能够使用elem_size
而不是硬编码的4
。是否可以通过一个寄存器,例如:
mov (%edi," value in %esi "),%r8d
如果没有,解决这个问题的最佳方法是什么? (我当时正在考虑将偏移量为size * index
的偏移量作为另一个寄存器,并删除1/2/4/8 size
部分)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。