使用内联汇编修改数组元素

时间:2014-01-26 21:24:03

标签: c++ assembly inline-assembly

有没有办法使用内联汇编修改特定的数组元素?

int move[2];

我希望更改move[0]中的move[1]__asm 我是汇编代码的新手,主要坚持C ++,可能有一个非常简单的答案 到目前为止,我已经尝试将move[1]移动到寄存器中,将我要更改的数字移动到另一个寄存器中,然后将一个移到另一个中。我已经设法让它编译但它实际上没有工作。

1 个答案:

答案 0 :(得分:3)

您可以使用MOV array[TYPE array * index], value;之类的内容,例如:

#include <stdio.h>

int main(int argc, char **argv) {
  int foo[] = {1, 2, 3};

  printf("%d\n", foo[0]);
  printf("%d\n", foo[1]);
  printf("%d\n", foo[2]);

  __asm {
    MOV foo[TYPE foo * 0], 11;
    MOV foo[TYPE foo * 1], 22;
    MOV foo[TYPE foo * 2], 33;
  };

  printf("%d\n", foo[0]);
  printf("%d\n", foo[1]);
  printf("%d\n", foo[2]);

  return 0;
}

TYPE将返回数组中一个元素的大小。输出:

1
2
3
11
22
33