繁体   English   中英

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

[英]Modifying array elements with inline assembly

有没有一种方法可以使用内联汇编修改特定的数组元素?

int move[2];

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

你可以使用像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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM