Articles of x86 64

Segmentação de 32 bits e 64 bits com o Visual Studio na mesma solução / projeto

Eu tenho um pequeno dilema sobre como configurar o meu visual studio para multi-targeting. Background: c # .NET v2.0 com p / invocando em DLL de terceiros de 32 bits, SQL compact v3.5 SP1, com um projeto de instalação. No momento, o destino da plataforma é definido como x86 para que possa ser executado no […]

__builtin_prefetch, quanto lê?

Estou tentando otimizar algum código RK4 GCC C ++ usando __builtin_prefetch Estou com algum problema tentando descobrir como fazer a pré-busca de uma turma inteira. Eu não entendo o quanto o const void *addr é lido. Então, eu tenho os próximos valores de e to carregado. for (int i = from; i px- from->px; double […]

Como encontrar se um arquivo DLL nativo é compilado como x64 ou x86?

Eu quero determinar se um assembly nativo é cumprido como x64 ou x86 de um aplicativo de código gerenciado ( c # ). Eu acho que deve estar em algum lugar no header do PE, já que o carregador do sistema operacional precisa saber essas informações, mas não consegui encontrá-lo. Claro que eu prefiro fazê-lo […]

Em quais plataformas o inteiro dividido por zero triggers uma exceção de ponto flutuante?

Em outra pergunta, alguém estava se perguntando por que eles estavam recebendo um “erro de ponto flutuante” quando na verdade eles tinham um inteiro dividido por zero em seu programa C ++. Uma discussão surgiu em torno disso, com alguns afirmando que as exceções de ponto flutuante na verdade nunca são levantadas para float divide […]

Cálculo de ponto flutuante vs número inteiro em hardware moderno

Eu estou fazendo algum trabalho crítico de desempenho em C ++, e atualmente estamos usando cálculos de inteiros para problemas que são inerentemente ponto flutuante porque “é mais rápido”. Isso causa muitos problemas irritantes e adiciona muito código chato. Agora, lembro-me de ler sobre como os cálculos de ponto flutuante eram tão lentos aproximadamente nos […]

É necessário um sinal ou extensão zero ao adicionar um deslocamento de 32 bits a um ponteiro para o ABI x86-64?

Resumo: Eu estava olhando o código assembly para orientar minhas otimizações e ver muitas extensões de sinal ou zero ao adicionar int32 a um ponteiro. void Test(int *out, int offset) { out[offset] = 1; } ————————————- movslq %esi, %rsi movl $1, (%rdi,%rsi,4) ret No começo, achei que meu compilador foi desafiado a adicionar inteiros de […]

Construir o OpenSSL Multiarch no OS X

Eu preciso construir o OpenSSL no OS X para arquiteturas de 32 e 64 bits. Quais são as opções que eu preciso dar a ./Configure para que eu construa as duas arquiteturas no mesmo arquivo .a?

O formato Mach-O 64-bit não suporta endereços absolutos de 32 bits. Matriz de Acesso NASM

Executando este código fora do meu computador Mac, usando o comando: nasm -f macho64 -o max.a maximum.asm Este é o código que estou tentando executar no meu computador que encontra o maior número dentro de uma matriz. section .data data_items: dd 3,67,34,222,45,75,54,34,44,33,22,11,66,0 section .text global _start _start: mov edi, 0 mov eax, [data_items + edi*4] […]

Onde está documentado o ABI System V x86-64?

A ABI x86-64 System V (usada em tudo, exceto no Windows) costumava ser usada em http://x86-64.org/documentation/abi.pdf , mas esse site agora caiu da Internet. Existe um novo lar autoritativo para o documento?

Por que o GCC não usa registros parciais?

Desmontando write(1,”hi”,3) no linux, construído com gcc -s -nostdlib -nostartfiles -O3 resultados em: ba03000000 mov edx, 3 ; thanks for the correction jester! bf01000000 mov edi, 1 31c0 xor eax, eax e9d8ffffff jmp loc.imp.write Eu não estou no desenvolvimento do compilador, mas desde que todos os valores movidos para esses registradores são constantes e conhecidos […]