Articles of assemblaggio

Come faccio assemblaggio in linea sull’iPhone?

Com’è fatto? Quali passi devo fare e quali sono le insidie ​​e i trucchi da prendere in considerazione?

gas: troppi riferimenti di memoria

quando si compila l’istruzione movl 4(%ebp), 8(%ebp) ho “troppi ricordi”, cosa c’è di sbagliato ??

Carica da un indirizzo a 64 bit in un altro registro rispetto a rax

Su x64, il caricamento da un indirizzo assoluto a 64 bit (cioè il dereferenziamento di un’immediata a 64 bit) può essere eseguito da movabs addr64, %rax Tuttavia, quando il registro di destinazione è diverso da rax l’assemblatore fornisce un messaggio di errore che rax la operand size mismatch for movabs . Cosa mi manca?

Impostare tutti i bit nel registro della CPU su 1 in modo efficiente

Per cancellare tutti i bit si vede spesso un esclusivo o come in XOR eax, eax . C’è anche un trucco per il contrario? Tutto quello che posso pensare è di invertire gli zeri con un’istruzione extra.

Come creare il kernel per il mio bootloader?

Sto cercando di creare il mio sistema operativo personalizzato e ho bisogno di aiuto con il mio codice. Questo è il mio bootloader.asm : [ORG 0x7c00] start: cli xor ax, ax mov ds, ax mov ss, ax mov es, ax mov [BOOT_DRIVE], dl mov bp, 0x8000 mov sp, bp mov bx, 0x9000 mov dh, 5 […]

Codice di auto modifica sempre errori di segmentazione su Linux

ho trovato un articolo sul codice di auto modifica e ho cercato di fare alcuni esempi, ma ottengo sempre errori di segmentazione. Come posso capire, c’è una violazione nelle autorizzazioni di memoria. Il segmento di codice è (r) ead / e (x) ecute e quindi il tentativo di scrivere risultati a questo errore. C’è un […]

Indirizzo delle etichette (MSVC)

Stiamo scrivendo un codice byte per un linguaggio compilato di alto livello e, dopo un po ‘di profilazione e ottimizzazione, è diventato chiaro che l’overhead delle prestazioni più elevato è l’istruzione switch che stiamo utilizzando per passare ai casi del codice byte. Abbiamo esaminato l’estrazione dell’indirizzo di ciascuna etichetta del caso e lo abbiamo archiviato […]

Come utilizzare le stringhe in emu8086

Ho bisogno di aiuto con le stringhe in emu8086. Ho inizializzato una stringa: str1 db “0neWord” E ho una stringa vuota: str2 db ? Ora ho bisogno di controllare tutte le lettere in str1 e copiare in str2 , ma se la lettera in str1 è 0, ho bisogno di sostituirlo con O. In caso […]

Bomba lab phase_4

Dump of assembler code for function func4 : mov %rbx,-0x18(%rsp) : mov %rbp, -0x10(%rsp) : mov %r12,-0x8(%rsp) : sub $0x18,%rsp : mov %edi,%ebx : mov %esi,%ebp : test %edi, %edi : jg 0x400fb2 : mov $0x0,%ebp : jmp 0x400fd2 cmp $0x1, %edi : je 0x400fd2 : lea -0x1(%rbx),%edi : callq 0x400f90 : mov %eax,%r12d : […]

Ottimizza per moltiplicazione rapida ma aggiunta lenta: FMA e doubledouble

Quando ho avuto un processore Haswell per la prima volta ho provato a implementare FMA per determinare il set Mandelbrot. L’algoritmo principale è questo: intn = 0; for(int32_t i=0; i<maxiter; i++) { floatn x2 = square(x), y2 = square(y); //square(x) = x*x floatn r2 = x2 + y2; booln mask = r2<cut; //booln is in […]