Articles of x86

Per cosa vengono utilizzate le istruzioni IN & OUT in x86?

Li ho encoutered alle istruzioni IN & OUT durante la lettura del libro “Understanding Linux Kernel”. Ho consultato il manuale di riferimento. 5.1.9 Istruzioni I / O Queste istruzioni spostano i dati tra le porte I / O del processore e un registro o una memoria. IN Read from a port OUT Write to a […]

Come smontare, modificare e quindi riassemblare un eseguibile di Linux?

C’è comunque questo può essere fatto? Ho usato objdump ma questo non produce output di assembly che saranno accettati da qualsiasi assemblatore che conosco. Mi piacerebbe essere in grado di modificare le istruzioni all’interno di un eseguibile e quindi testarlo in seguito.

Assemblaggio x86 su un Mac

Qualcuno sa di buoni strumenti (sto cercando gli IDE) per scrivere assembly sul Mac. Xcode è un po ‘ingombrante per me. Inoltre, sui Mac Intel, posso usare xm asm generico? O c’è un set di istruzioni modificato? Qualsiasi informazione sul post Intel. Inoltre: so che su Windows, asm può essere eseguito in un ambiente emulato […]

Come installare ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)

Ho installato Ubuntu 14.04 (Trusty Tahr) ieri. Tutto sembra OK. Ma quando ho provato a compilare un codice C, ho riscontrato il seguente errore. L’errore sembra essere dovuto al sistema operativo privo del supporto dell’architettura a 32 bit. L’output dell’errore è il seguente: /usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)’ is incompatible with i386:x86-64 output […]

Stampa di cifre esadecimali con assemblaggio

Sto cercando di imparare l’assemblaggio NASM, ma mi sembra che stia lottando con quello che sembra semplicemente nei linguaggi di alto livello. Tutti i libri di testo che sto usando discutono usando le stringhe – infatti, sembra essere una delle loro cose preferite. Stampa di Hello World, passando da maiuscolo a minuscolo, ecc. Tuttavia, sto […]

Disegnare un personaggio nella memoria VGA con l’assembly inline GNU C

Sto imparando a fare qualche programmazione VGA di basso livello in DOS con C e assemblaggio in linea. In questo momento sto cercando di creare una funzione che stampi un personaggio sullo schermo. Questo è il mio codice: //This is the characters BITMAPS uint8_t characters[464] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x50, 0x50,0x00,0x00,0x00,0x00,0x00,0x50,0xf8,0x50,0x50,0xf8,0x50,0x00,0x20,0xf8,0xa0, 0xf8,0x28,0xf8,0x00,0xc8,0xd0,0x20,0x20,0x58,0x98,0x00,0x40,0xa0,0x40,0xa8,0x90, 0x68,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x40,0x40,0x40,0x20,0x00, 0x20,0x10,0x10,0x10,0x10,0x20,0x00,0x50,0x20,0xf8,0x20,0x50,0x00,0x00,0x20,0x20, 0xf8,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x40,0x00,0x00,0x00,0xf8,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x08,0x10,0x20,0x40,0x80, 0x00,0x70,0x88,0x98,0xa8,0xc8,0x70,0x00,0x20,0x60,0x20,0x20,0x20,0x70,0x00,0x70, […]

Perché la rottura della “dipendenza di uscita” di LZCNT è importante?

Durante il benchmark ho misurato un throughput molto più basso di quello che avevo calcolato, che ho ristretto all’istruzione LZCNT (succede anche con TZCNT), come dimostrato nei seguenti benchmark: xor ecx, ecx _benchloop: lzcnt eax, edx add ecx, 1 jnz _benchloop E: xor ecx, ecx _benchloop: xor eax, eax ; this shouldn’t help, but it […]

Cosa significa “DS: ” in assembly?

0040103A CALL DWORD PTR DS:[40207A] USER32.MessageBoxA Cosa significa DS: significa?

Qual è il modo più veloce per convertire float in int su x86

Qual è il modo più veloce che conosci per convertire un numero in virgola mobile in un int su una CPU x86. Preferibilmente in C o assemblato (che può essere allineato in C) per qualsiasi combinazione di quanto segue: 32/64/80-bit float -> 32/64-bit intero Sto cercando una tecnica che sia più veloce di lasciare che […]

Può x86 riordinare un negozio ristretto con un carico più ampio che lo contiene completamente?

Il Manuale dello sviluppatore del software per le architetture Intel® 64 e IA-32 dice: 8.2.3.4 I carichi possono essere riordinati con i depositi precedenti in posizioni diverse Il modello di ordinamento della memoria Intel 64 consente di riordinare un carico con un negozio precedente in una posizione diversa. Tuttavia, i carichi non vengono riordinati con […]