Come funziona la funzione C "memcpy" standard? Deve copiare un pezzo (grande) di RAM in un'altra area nella RAM. Dato che so che non puoi passare direttamente da RAM a RAM in assembly (con l'istruzione mov) quindi suppongo che utilizzi un registro CPU come memoria intermedia durante la copia?Come funziona l'implementazione interna di memcpy?
Ma come si copia? Da blocchi (come copierà da blocchi?), Da singoli byte (char) o dal tipo di dati più grande che hanno (copia in long long long - che è 12 byte sul mio sistema).
EDIT: Ok a quanto pare è possibile spostare i dati dalla RAM alla RAM direttamente, io non sono un esperto di montaggio e tutto quello che hanno imparato a conoscere il montaggio è da questo documento (X86 assembly guide), che menziona nella sezione riguardante l'istruzione MOV che non è possibile passare da RAM a RAM. Apparentemente questo non è vero.
Questo è specifico della piattaforma. Si prega di specificare una piattaforma. –
Io uso linux, mac e windows (32-bit, 64-bit e 32-bit rispettivamente) ma ho fatto questa domanda mentre usavo Linux. – hddh