c - 如何通过 x86 程序集访问整数数组中的元素

标签 c arrays assembly x86

如何通过 x86 程序集访问整数数组中的元素? 我当前的代码显示了我正在尝试做的事情:

int arr[3]{0,6,8};

__asm
{
   mov eax, [arr+1*4] // access value "6" in the array and put it in eax
}

eax 根据需要显示“0F5CA9A1”而不是 6

最佳答案

以下代码在 VS 2013 上完美运行:

int array[] = { 10, 20, 30 };
int idx0, idx1, idx2;

__asm {
    mov eax, [array + 0 * 4]
    mov idx0, eax
    mov eax, [array + 1 * 4]
    mov idx1, eax
    mov eax, [array + 2 * 4]
    mov idx2, eax
}

printf("%d %d %d\n", idx0, idx1, idx2);

输出:

10 20 30

关于c - 如何通过 x86 程序集访问整数数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025293/

相关文章:

c - 以列方式从二进制矩阵获取 1 的索引

java - 为什么我的 getIndex 方法不起作用?

javascript - 过滤 Javascript 数组并仅返回具有填充键的对象

assembly - 如何为我的引导加载程序制作内核?

assembly - 为什么 elf 文件中的段可以重叠

C程序不会计算min和max(大和小)

c++ - 使用 sprintf - 首先查询大小或传递 MAX_PATH 大数组

linux - 延迟加载程序

计算C中耗时

python - 在 Python 中从较大的方阵 (n,n) 复制较小的方阵 (m,m)