有没有办法使用内联汇编修改特定的数组元素?
int move[2];
我希望更改move[0]
中的move[1]
和__asm
我是汇编代码的新手,主要坚持C ++,可能有一个非常简单的答案
到目前为止,我已经尝试将move[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