Articles of assembly

Spinlock inline-assembly più veloce

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 […]

Come creare un file ELF eseguibile in Linux usando un editor esadecimale?

Solo curioso. Questa ovviamente non è una buona soluzione per la programmazione vera e propria, ma dire che volevo creare un eseguibile in Bless (un editor esadecimale). La mia architettura è x86. Cos’è un programma molto semplice che posso fare? Un mondo ciao? Un ciclo infinito? Simile a questa domanda, ma in Linux.

Come verificare il valore EIP con linguaggio assembly?

Voglio ottenere il valore corrente del registro EIP con linguaggio assembly. È ansible?

Chiamate di sistema in Windows e API Native?

Recentemente ho usato molto linguaggio Assembly in sistemi operativi * NIX. Mi stavo chiedendo il dominio di Windows. Convenzione di chiamata in linux: mov $SYS_Call_NUM, %eax mov $param1 , %ebx mov $param2 , %ecx int $0x80 Questo è tutto. È così che dovremmo fare una chiamata di sistema in linux. Riferimento di tutte le chiamate […]

Come interrompere le istruzioni di assemblaggio a un dato indirizzo in gdb?

0x0000000000400448 : push %rbp 0x0000000000400449 : mov %rsp,%rbp 0x000000000040044c : mov $0x6,%eax 0x0000000000400451 : leaveq 0x0000000000400452 : retq Provai: breaki 0x0000000000400448 ma sembra che non ci sia un simile comando. Gdb ha una funzione del genere?

C ++ try / throw / catch => codice macchina

Mentalmente, mi sono sempre chiesto come provare / lanciare / catturare guarda dietro le quinte, quando la compilazione del C ++ lo traduce in assemblatore. Ma dal momento che non l’ho mai usato, non sono mai riuscito a verificarlo (alcune persone direbbero pigre). La pila normale è usata per tenere traccia dei try s, o […]

Come disassemblare un eseguibile binario in Linux per ottenere il codice assembly?

Mi è stato detto di usare un disassemblatore. gcc ha qualcosa di integrato? Qual è il modo più semplice per farlo?

Come generare codice assembly con clang nella syntax Intel?

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?

Come posso visualizzare MSIL / CIL generato dal compilatore C #? Perché si chiama assemblaggio?

Sono nuovo alla programmazione .NET C #. Sto seguendo alcuni libri. Si dice che invece di compilarlo direttamente al codice binario (codice nativo). Il codice di alto livello viene convertito in linguaggio intermedio (chiamato MSIL aka CIL). Ma quando compilo, ottengo un file exe / dll. Questo MSIL / CIL contiene questo file exe / […]

Apprendimento

Ho deciso di imparare il linguaggio dell’Assemblea. La ragione principale per farlo è essere in grado di capire il codice smontato e magari essere in grado di scrivere parti di codice più efficienti (ad esempio, attraverso c ++), fare cose come code caves, ecc. Ho visto che ci sono un migliaio di differenti sapori di […]