首页 > 解决方案 > 在 C 中使用内联汇编将数据从一个数组复制到另一个数组

问题描述

我正在尝试使用 C 中的内联汇编将数据从一个数组复制到另一个数组rep movsd,我的代码目前如下所示:

#include<stdio.h>

int main(){
  int v1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  int v2[10];

  asm ("mov %edi, v2\n"
    "mov %esi, v1\n"
    "mov %ecx, 40\n"
    "rep movsd"
  );

  for(int i=0;i<10;i++){
    printf("%d ", v2[i]);
  }

  printf("\n");
  return 0;
}

但我不断收到错误消息,说我不能通过以下方式使用 v2 和 v1:

Undefined symbol "v2" can't be used to  make a PIE object

我找不到将 C 指针添加到内联程序集的正确语法。

我正在使用以下版本的 gcc:

gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

标签: cassemblyx86-64inline-assembly

解决方案


推荐阅读