Articles of assembly

Aprendendo assembléia

Eu decidi aprender a linguagem Assembly. A principal razão para isso é ser capaz de entender código desmontado e talvez ser capaz de escrever partes mais eficientes de código (por exemplo, através de c ++), fazendo coisas como cavernas de código, etc. Eu vi que há um zilhão de diferentes sabores de assembly , então, […]

Definir todos os bits no registro da CPU para 1 com eficiência

Para limpar todos os bits, você geralmente vê um exclusivo ou como XOR eax, eax . Existe tal truque para o oposto também? Tudo o que posso pensar é inverter os zeros com uma instrução extra.

Chamando printf em x86_64 usando o assembler GNU

Eu escrevi um programa usando a syntax da AT & T para uso com o assembler GNU: .data format: .ascii “%d\n” .text .global main main: mov $format, %rbx mov (%rbx), %rdi mov $1, %rsi call printf ret Eu uso o GCC para montar e vincular: gcc -o main main.s Eu corro com este comando: ./a […]

Como desligar o computador de um ambiente independente?

Eu estou fazendo um sistema operacional de modo protegido baseado na arquitetura x86 da Intel, e estava procurando por algumas informações sobre como desligar o computador via código assembly, ou algo parecido. Você poderia me ajudar com esse problema?

Obtendo o valor máximo em um vetor __m128i com SSE?

Acabei de começar a usar o SSE e estou confuso como obter o valor inteiro máximo ( max ) de um __m128i . Por exemplo: __m128i t = _mm_setr_ps(0,1,2,3); // max(t) = 3; Pesquisando por aí me levou a instrução MAXPS mas não consigo encontrar como usar isso com “xmmintrin.h” . Além disso, existe alguma […]

Fragmento de código de máquina poliglota x86-32 / x86-64 que detecta o modo de 64 bits em tempo de execução?

É possível que os mesmos bytes de código de máquina descubram se estão sendo executados no modo 32 ou 64 bits e, em seguida, fazem coisas diferentes? ou seja, escrever código de máquina poliglota . Normalmente você pode detectar em tempo de compilation com macros #ifdef . Ou em C, você poderia escrever um if() […]

Modos de Endereçamento em Linguagem Assembly (IA-32 NASM)

Como os resources da web sobre isso são escassos, eu irei, para o benefício de pesquisas futuras, começar listando os modos de endereço para o IA-32 Assembly Language (NASM) e, em seguida, fazer uma pergunta rápida. Registrar endereçamento mov eax, ebx: Copia o que está em ebx em eax mov esi, var: Copia o endereço […]

Imprimindo um número em linguagem assembly?

mov al,10 add al,15 Como faço para imprimir o valor de ‘ al ‘?

Auto modificando código sempre falhas de segmentação no Linux

Eu encontrei um artigo sobre auto modificando código e tentei fazer alguns exemplos, mas eu sempre obtenho falhas de segmentação. Como posso entender, há uma violação nas permissions de memory. O segmento de código é (r) ead / e (x) ecute e, portanto, a tentativa de escrever resulta nessa falha. Existe uma maneira de testar […]

Desligue o computador usando o assembly

Como posso desligar o computador usando apenas o código assembly?