Articles of x86 64

Come stampare un float a precisione singola con printf

Sto provando a stampare un numero in virgola mobile nell’assemblaggio x86_64 ma si limita a stampare il valore come zero. Ci sono già alcune domande su questo. Uno sembrava essere risolto assicurandosi di impostare il numero di registri vettoriali che stai utilizzando in% al . Un altro ha mostrato che è necessario avere un allineamento […]

Atomic double floating point o SSE / AVX vector load / store su x86_64

Qui (e in alcune domande SO) vedo che C ++ non supporta qualcosa come lock-free std::atomic e non può ancora supportare qualcosa come il vettore atomico AVX / SSE perché è dipendente dalla CPU (anche se oggigiorno di CPU che conosco, ARM, AArch64 e x86_64 hanno i vettori). Ma c’è il supporto a livello di […]

Che cosa verrà utilizzato per lo scambio di dati tra thread sono in esecuzione su un core con HT?

La tecnologia Hyper-Threading è una forma di tecnologia di multithreading simultanea introdotta da Intel. Queste risorse includono il motore di esecuzione, le cache e l’interfaccia del bus di sistema; la condivisione delle risorse consente a due processori logici di lavorare tra loro in modo più efficiente e consente a un processore logico in stallo di […]

Perché le istruzioni di moltiplicazione con segno e senza segno sono diverse su x86 (-64)?

Ho pensato che il punto 2 del complemento era che le operazioni potevano essere implementate allo stesso modo per i numeri firmati e non firmati. Le liste di Wikipedia, anche quelle specifiche, si moltiplicano come una delle operazioni a vantaggio . Quindi, perché x86 ha istruzioni separate per ciascuno, mul e imul ? È ancora […]

Targeting sia a 32 bit che a 64 bit con Visual Studio nella stessa soluzione / progetto

Ho un piccolo dilemma su come impostare le build del mio studio visivo per il targeting multiplo. Background: c # .NET v2.0 con p / invocazione in DLL di 32 bit di terze parti, SQL compatto v3.5 SP1, con un progetto di installazione. Al momento, il target della piattaforma è impostato su x86 in modo […]

__builtin_prefetch, quanto legge?

Sto cercando di ottimizzare alcuni codici RK4 GCC C ++ usando __builtin_prefetch Sto avendo qualche problema a cercare di capire come prefetch un’intera class. Non capisco quanto del const void *addr venga letto. In modo che ho i prossimi valori di from e to caricare. for (int i = from; i px- from->px; double delta […]

Su quali piattaforms il dividendo intero per zero triggers un’eccezione a virgola mobile?

In un’altra domanda, qualcuno si chiedeva perché stavano ottenendo un “errore in virgola mobile” quando in realtà avevano un numero intero diviso per zero nel loro programma C ++. A questo punto è sorto un dibattito, con alcuni che affermano che le eccezioni in virgola mobile non sono in realtà mai aumentate per il float […]

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?