Articles of x86 64

Come trovare se un file DLL nativo è compilato come x64 o x86?

Voglio determinare se un assembly nativo è rispettato come x64 o x86 da un’applicazione di codice gestita ( C # ). Penso che deve essere da qualche parte nell’intestazione PE dal momento che il caricatore del sistema operativo deve conoscere queste informazioni, ma non ho potuto trovarlo. Ovviamente preferisco farlo nel codice gestito, ma se […]

Calcoli in virgola mobile vs intero su hardware moderno

Sto facendo un po ‘di lavoro critico sulle prestazioni in C ++ e attualmente stiamo usando calcoli integer per problemi che sono intrinsecamente a virgola mobile perché “è più veloce”. Questo causa un sacco di fastidiosi problemi e aggiunge un sacco di codice fastidioso. Ora, ricordo di aver letto su come i calcoli in virgola […]

Costruisci Multiarch OpenSSL su OS X

Devo creare OpenSSL su OS X per architetture a 32 e 64 bit. Quali sono le opzioni che ho bisogno di dare a ./Configure modo che venga costruito per entrambe le architetture nello stesso file .a?

Il formato Mach-O a 64 bit non supporta gli indirizzi assoluti a 32 bit. NASM Accessing Array

Esecuzione di questo codice dal mio computer Mac, usando il comando: nasm -f macho64 -o max.a maximum.asm Questo è il codice che sto tentando di eseguire sul mio computer che trova il numero più grande all’interno di un array. section .data data_items: dd 3,67,34,222,45,75,54,34,44,33,22,11,66,0 section .text global _start _start: mov edi, 0 mov eax, [data_items […]

Dove è documentato l’ABI System V x86-64?

Il sistema V ABI x86-64 (usato su tutto eccetto Windows) viveva in http://x86-64.org/documentation/abi.pdf , ma quel sito ora è caduto da internet. C’è una nuova casa autorevole per il documento?

Perché GCC non utilizza registri parziali?

Disassemblando write(1,”hi”,3) su linux, gcc -s -nostdlib -nostartfiles -O3 con gcc -s -nostdlib -nostartfiles -O3 traduce in: ba03000000 mov edx, 3 ; thanks for the correction jester! bf01000000 mov edi, 1 31c0 xor eax, eax e9d8ffffff jmp loc.imp.write Non sono nello sviluppo del compilatore ma poiché ogni valore trasferito in questi registri è costante e […]

Perché Windows64 utilizza una convenzione di chiamata diversa da tutti gli altri SO su x86-64?

AMD ha una specifica ABI che descrive la convenzione di chiamata da utilizzare su x86-64. Tutti i sistemi operativi lo seguono, ad eccezione di Windows che ha la propria convenzione di chiamata x86-64. Perché? Qualcuno conosce le ragioni tecniche, storiche o politiche di questa differenza, o è puramente una questione di NIHsyndrome? Capisco che diversi […]

Come determinare se un assembly .NET è stato creato per x86 o x64?

Ho una lista arbitraria di assembly .NET. Devo controllare a livello di codice se ogni DLL è stata creata per x86 (rispetto a x64 o qualsiasi CPU). È ansible?

Perché GCC utilizza la moltiplicazione per un numero strano nell’implementazione della divisione integer?

Ho letto delle operazioni div e mul assembly e ho deciso di vederle in azione scrivendo un semplice programma in C: File division.c #include #include int main() { size_t i = 9; size_t j = i / 5; printf(“%zu\n”,j); return 0; } E quindi generare codice linguaggio assembly con: gcc -S division.c -O0 -masm=intel Ma […]

Gli indirizzi assoluti a 32 bit non sono più consentiti in x86-64 Linux?

64 bit Linux utilizza il modello di memoria di piccole dimensioni per impostazione predefinita, che inserisce tutti i codici e i dati statici sotto il limite di indirizzi di 2 GB. Ciò assicura che sia ansible utilizzare indirizzi assoluti a 32 bit. Le versioni precedenti di gcc utilizzano indirizzi assoluti a 32 bit per array […]