Resultados da pesquisa a pedido "assembly"
Quais registros são preservados através de uma chamada de função linux x86-64?
Eu acredito que entendo como o Linux x86-64 ABI usa registradores e stack para passar parâmetros para uma função (cf.discussão prévia da ABI). O que me atrap...
Estado inicial dos registradores e pilha do programa no Linux ARM
No momento, estou jogando com o assembly ARM no Linux como um exercício de aprendizado. Estou usando o assembly 'bare', ou seja, sem libcrt ou libgcc...
SIMD vectorize atan2 usando o assembly ARM NEON
Eu quero calcular a magnitude e o ângulo de 4 pontos usando instruções de néon SIMD e montagem do braço. Existe uma biblioteca embutida na maioria das lingua...
Implementando o GDT com o kernel básico
Recentemente, fiquei fascinado com o desenvolvimento do kernel e comecei com o tutorial bare-bones no Wiki OSDev. Depois de implementar o exemplo Hello World...
alocação de mul e memória nos registros edx :: eax with masm
Estou tentando entender a lógica do uso do operando "mul" no assembler (estou usando a Comunidade do Visual Studio e o MASM). Por que, depois de "mul ebx", o resultado também muda e edx, e não apenas o eax? "O resultado (de MUL) é armazenado no ...
o retorno flutua para o objetivo-c a partir da função de montagem do braço
Eu escrevi uma função de montagem que funciona bem em um iPhone 4 (código de 32 bits) e também em um iPhone 6s (código de 64 bits). Passo quatro números de ponto flutuante de uma função de chamada no objetivo-c. Aqui está a estrutura que eu uso ...
Implementando um Matcher para a Regex '[ab] [^ r] + r]' no assembly
Preciso de ajuda com meu código de montagem. Preciso usar código de gravação, que encontre o intervalo, adequado à minha expressão regex. Meu regex:[ab][^r]+r, primeiro, estou procurando se há 'a' ou 'b' e pule para a seção 'Iniciar'. Agora eu ...
obter o lr do chamador da sub-rotina em C variável - braço
Eu tenho uma função C que é suposto obter o valor do registrador lr do chamador em uma variável local.Eu tentei o seguinte código:
Por que estou recebendo zero do mov ax, bx + si + 1?
mov ax,10 mov bx,4 mov si,ax mov ax,bx+si+1 LEA ax,[bx+si+1]Quando adiciono bx, si e 1 juntos e passo para ax, o resultado é 0. Na próxima linha, quando uso o LEA, ele funciona e recebo 15. Por que estou recebendo zero ao usar o move?
Melhor montagem ou compilação para um mínimo de três valores
Eu estou olhando para código gerado pelo GCC-4.8 para x86_64 e me perguntando se existe uma maneira melhor (mais rápida) de calcular o mínimo de três valores...