【发布时间】:2009-11-01 00:18:17
【问题描述】:
我正在尝试将一些内联汇编写入C。我有两个数组作为输入,我需要将array1中的一个元素复制到array2中,以下是我目前拥有的:
asm (
"movl %0,%%eax;"
"movl %1,%%ebx;"
"movl (%%eax),%%ecx;"
"movl %%ecx,(%ebx);"
"xor %%ecx,%%ecx;"
"movl 4(%%eax),%%ecx;"
//do something on %ecx
"movl %%ecx,4(%ebx);" //write second
:
:"a"(array1),"b"(array2)
);
为什么会出现分段错误?
【问题讨论】:
-
让解析器工作,停止添加 HTML pre 标记——你正在放弃 SO 所做的突出显示。
-
您只是将一个元素从一个数组复制到另一个数组吗?这看起来不像是汇编优化能帮上忙的事情。
-
你应该添加更多关于你为什么要在汇编中这样做的细节,否则你会得到很多“为什么要麻烦?”答案。
-
你能告诉你是哪一行导致了分段错误吗?
标签: c assembly inline-assembly memcpy