【发布时间】:2013-07-04 03:19:57
【问题描述】:
标准 C 函数“memcpy”如何工作?它必须将(大)块 RAM 复制到 RAM 中的另一个区域。因为我知道你不能在汇编中直接从 RAM 移动到 RAM(使用 mov 指令)所以我猜它在复制时使用 CPU 寄存器作为中间存储器?
但它是如何复制的?按块(如何按块复制?),按单个字节 (char) 或它们拥有的最大数据类型(以 long long double 复制 - 在我的系统上是 12 个字节)。
编辑:好吧,显然你可以直接将数据从 RAM 移动到 RAM,我不是装配专家,我所了解的关于装配的所有知识都来自该文档 (X86 assembly guide),该文档在关于不能从 RAM 移动到 RAM 的 mov 指令的部分。显然这不是真的。
【问题讨论】:
-
这是特定于平台的。请指定一个平台。
-
我使用 linux、mac 和 windows(分别为 32 位、64 位和 32 位),但我在使用 Linux 时问了这个问题。