Un decennio o due fa, valeva la pena scrivere codice numerico per evitare l’uso di moltiplicare e dividere e utilizzare invece addizione e sottrazione. Un buon esempio è usare le differenze in avanti per valutare una curva polinomiale invece di calcolare direttamente il polinomio. È ancora così, o le moderne architetture di computer sono avanzate […]
Sto scrivendo un’applicazione multithread in c ++, dove le prestazioni sono critiche. Ho bisogno di usare un sacco di blocchi durante la copia di piccole strutture tra i thread, per questo ho scelto di usare gli spinlock. Ho fatto alcune ricerche e test di velocità su questo e ho scoperto che la maggior parte delle […]
Sono interessato a svuotare la cache (L1, L2 e L3) solo per un’area di spazio indirizzo, ad esempio tutte le voci della cache dall’indirizzo A all’indirizzo B. Esiste un meccanismo per farlo in Linux, sia dall’utente che dallo spazio del kernel ?
Voglio ottenere il valore corrente del registro EIP con linguaggio assembly. È ansible?
Sto calcolando otto prodotti punto in una sola volta con AVX. Nel mio codice attuale faccio qualcosa del genere (prima di srotolare): Ivy-Bridge / Sandy-Bridge __m256 areg0 = _mm256_set1_ps(a[m]); for(int i=0; i<n; i++) { __m256 breg0 = _mm256_load_ps(&b[8*i]); tmp0 = _mm256_add_ps(_mm256_mul_ps(arge0,breg0), tmp0); } Haswell __m256 areg0 = _mm256_set1_ps(a[m]); for(int i=0; i<n; i++) { __m256 breg0 […]
Come mostra questa domanda , con g ++, posso fare g++ -S -masm=intel test.cpp . Inoltre, con clang, posso fare clang++ -S test.cpp , ma -masm=intel non è supportato da clang ( warning argument unused during compilation: -masm=intel ). Come posso ottenere la syntax Intel con clang?
L’altra settimana ho scritto una piccola class thread e una pipe message unidirezionale per consentire la comunicazione tra thread (due pipe per thread, ovviamente, per comunicazioni bidirezionali). Tutto ha funzionato bene sul mio Athlon 64 X2, ma mi chiedevo se avrei avuto problemi se entrambi i thread guardavano la stessa variabile e il valore della […]
Quali file di intestazione forniscono gli elementi intrinseci per le diverse estensioni del set di istruzioni SIMX x86 (MMX, SSE, AVX, …)? Sembra imansible trovare una tale lista online. Correggimi se sbaglio.
Voglio fare qualcosa di semplice in linguaggio assembly. aggiungere due numeri e stampare il risultato sullo schermo. Ho fatto quel codice: .Model SMALL .Stack 100h .Code start: MOV ax, 10 ADD ax, 5 MOV ah, 02h INT 21h MOV ah, 01h INT 21h MOV ah, 4ch INT 21h end start Dopo aver compilato il codice […]
Sto ri-imparando l’assemblatore che ho usato su macchine MS-DOS molto vecchie !!! Questa è la mia comprensione di come dovrebbe essere quella funzione. Compilare ma si blocca con un SIGSEGV quando si tenta di inserire 0xffffffff in ecx . Il codice viene eseguito in una VM con Debian 9. a 32 bit. Qualsiasi aiuto sarebbe […]