Articles of cpu registers

Perché non è ansible impostare direttamente il puntatore dell’istruzione?

L’articolo di Wikipedia sull’assemblaggio x86 dice che “il registro IP non è accessibile direttamente dal programmatore”. Direttamente significa con istruzioni come MOV e Aggiungi. Perchè no? Qual è la ragione di questo? Quali sono le restrizioni tecniche?

Memoria di programmazione dell’assemblaggio Assegnazione di EAX vs Ax, AH, AL

La mia comprensione dei registri di assembly dice che ogni registro può essere consultato dall’intero codice a 32 bit ed è suddiviso in più registri accessibili. In questo esempio, EAX è un registro a 32 bit, se chiamiamo AX dovrebbe restituire i primi 16 bit, e se chiamiamo AH o AL , dovrebbe restituire gli […]

x86_64 registra rax / eax / ax / al sovrascrittura del contenuto del registro completo

Poiché è ampiamente pubblicizzato, i moderni processori x86_64 hanno registri a 64 bit che possono essere utilizzati in modalità compatibile con le versioni precedenti come registri a 32 bit, registri a 16 bit e anche registri a 8 bit, ad esempio: 0x1122334455667788 ================ rax (64 bits) ======== eax (32 bits) ==== ax (16 bits) == […]

Perché% eax è azzerato prima di una chiamata a printf?

Sto cercando di riprendere un po ‘x86. Sto compilando un mac 64 bit con gcc -S -O0. Codice in C: printf(“%d”, 1); Produzione: movl $1, %esi leaq LC0(%rip), %rdi movl $0, %eax ; WHY? call _printf Non capisco perché% eax sia cancellato a 0 prima che venga chiamato ‘printf’. Poiché printf restituisce il numero di […]

Cosa significano i prefissi E e R nei nomi dei registri Intel a 32 bit e 64 bit?

I nomi dei registri a 32 bit iniziano con una E e quelli a 64 bit iniziano con una R. Che cosa rappresentano E e R? C’è un motivo per scegliere questi alfabeti? Inoltre, anche nei registri a 64 bit, possiamo vedere in qualsiasi debugger di basso livello come Windbg che i bit più a […]

A cosa serve il registro “FS” / “GS”?

Quindi so cosa dovrebbero essere i seguenti registri e i loro usi: CS = Segmento di codice (utilizzato per IP) DS = Segmento dati (utilizzato per MOV) ES = Segmento di destinazione (usato per MOVS, ecc.) SS = Stack Segment (usato per SP) Ma a cosa servono i seguenti registri? FS = “Segmento file”? GS […]

Come si stampa un numero intero in Programmazione a livello di assieme senza printf dalla libreria c?

Qualcuno può dirmi il codice puramente di assemblaggio per la visualizzazione del valore in un registro in formato decimale? Si prega di non suggerire l’uso di printf hack e quindi di compilare con gcc. Descrizione: Bene, ho fatto alcune ricerche e alcuni esperimenti con NASM e ho immaginato che avrei potuto usare la funzione printf […]

MOV di x86 può davvero essere “libero”? Perché non posso riprodurre questo a tutti?

Continuo a vedere le persone affermano che l’istruzione MOV può essere gratuita in x86, a causa della rinomina del registro. Per la vita di me, non posso verificarlo in un singolo caso di test. Ogni caso di prova che provo lo smaschera. Ad esempio, ecco il codice che sto compilando con Visual C ++: #include […]