3 ms·
This is not how an assembly programmer sees this problem. (memcpy is often hand coded in assembly). This means the code takes advantage of CPU pipelines and b
by noselasd 9y ago
This is not how an assembly programmer sees this problem.
(memcpy is often hand coded in assembly).
This means the code takes advantage of CPU pipelines and branch predictions, which means the source/destination pointer might be de-referenced and loaded into a register before the number of bytes is being inspected, or the assembly is executed with a 0 value, which still makes the CPU do a load or store on the src or dest pointer. This is being done to gain performance, and doing things in another order or explicitly validating the input decreases performance.
If then the src/dest pointer is NULL, the above scenario plays out badly, but in order to not sacrifice performance, the burden is placed on the caller to correctly use memcpy() instead of memcpy() detecting invalid use.
- quotemstr 9y agoFor memcpy(x,y,n), x and y can refer to the last byte on a page. What are you going to do, prefetch that one byte?