c - 在 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
解决方案
推荐阅读
- python - K 表示聚类算法 Python 解释需要
- solr - 使用 Tika-parser 库丢弃 Solr 爬取中的特定 html 元素
- keras - 使用 L2 正则化将 sklearn MLPClassifier 移植到 Keras
- javascript - 仅获取选择项vue js的值
- rust - 将 JS 中实例化的 Rust 结构存储在 Wasm 端的 Rust 向量中
- vue.js - 条件渲染在引导 vue 上不起作用
- json - 从 JSON SQL 查询中删除反斜杠
- python - 如何更改等高线图中的 x 轴限制?
- javascript - 带标签的垂直范围滑块
- java - 在 ChatActivity 中滚动后,我在聊天中发送的图像多次显示