Articles of x86

Assembly Language – Como fazer o Modulo?

Existe algo como um módulo-operador no x86 Assembler?

Como desmontar, modificar e remontar um executável Linux?

Existe alguma maneira de fazer isso? Eu usei objdump, mas isso não produz saída de assembly que será aceita por qualquer montador que eu conheço. Gostaria de poder alterar as instruções dentro de um executável e testá-lo depois.

Para que servem as instruções IN & OUT no x86?

Eu encontrei essas instruções para IN & OUT ao ler o livro “Understanding Linux Kernel”. Eu olhei para o manual de referência. 5.1.9 Instruções de E / S Essas instruções movem dados entre as portas de E / S do processador e um registro ou memory. IN Read from a port OUT Write to a […]

Assembléia x86 em um Mac

Alguém sabe de quaisquer boas ferramentas (estou procurando por IDEs) para gravar assembly no Mac. O Xcode é um pouco complicado para mim. Além disso, nos Macs Intel, posso usar o genérico x86 asm? Ou há um conjunto de instruções modificado? Qualquer informação sobre postar Intel. Além disso: Eu sei que no windows, o asm […]

Como instalar ia32-libs em Ubuntu 14.04 LTS (Trusty Tahr)

Eu instalei o Ubuntu 14.04 (Trusty Tahr) ontem. Tudo parece bem. Mas quando tentei compilar algum código C, encontro o seguinte erro. O erro parece ser devido ao OS sem o suporte de arquitetura de 32 bits. A saída do erro é como seguindo: /usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)’ is incompatible with i386:x86-64 […]

Desenhar um caractere em memory VGA com a assembly inline GNU C

Eu estou aprendendo a fazer alguma programação VGA de baixo nível em DOS com C e assembly inline. No momento estou tentando criar uma function que imprima um personagem na canvas. Este é o meu código: //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, 0x88,0x08,0x70,0x80,0xf8,0x00,0xf8,0x10,0x30,0x08,0x88,0x70,0x00,0x20,0x40,0x90, 0x90,0xf8,0x10,0x00,0xf8,0x80,0xf0,0x08,0x88,0x70,0x00,0x70,0x80,0xf0,0x88,0x88, […]

Por que quebrar a “dependência de saída” do LZCNT é importante?

Enquanto benchmarking, eu medi uma taxa de transferência muito menor do que eu havia calculado, o que reduzi à instrução LZCNT (isso também acontece com o TZCNT), como demonstrado nos seguintes benchmarks: xor ecx, ecx _benchloop: lzcnt eax, edx add ecx, 1 jnz _benchloop E: xor ecx, ecx _benchloop: xor eax, eax ; this shouldn’t […]

Impressão de dígitos hexadecimais com assembly

Eu estou tentando aprender assembly NASM, mas parece que estou lutando com o que parece simplesmente em linguagens de alto nível. Todos os livros que estou usando discutem usando strings – na verdade, isso parece ser uma das coisas favoritas deles. Imprimir olá mundo, mudando de maiúsculas para minúsculas, etc. No entanto, estou tentando entender […]

O que o NOPL faz no sistema x86?

qual é a function do NOPL na máquina x86? Parece que não faz nada, mas porque é que está sempre no código de assembly?

Qual é o caminho mais rápido para converter float para int em x86

Qual é a maneira mais rápida de converter um número de ponto flutuante em um int em uma CPU x86? De preferência em C ou conjunto (que pode ser alinhado em C) para qualquer combinação dos seguintes: 32/64/80-bit float -> inteiro de 32/64 bits Eu estou procurando por alguma técnica que é mais rápida do […]