Resultados da pesquisa a pedido "inline-assembly"
gcc, montagem em linha - falta pushad / popad?
Qualquer maneira de evitar a necessidade de copiar e colar opushad/popad corpo de instruções no meu código? Porque o gcc (sinalizadores atuais:-Wall -m32) reclama que __asm__("pushad;");Erro: nenhuma instrução: `pushad ...
Como acessar C struct / variáveis do inline asm?
Considere o seguinte código: int bn_div(bn_t *bn1, bn_t *bn2, bn_t *bnr) { uint32 q, m; /* Division Result */ uint32 i; /* Loop Counter */ uint32 j; /* Loop Counter */ /* Check Input */ if (bn1 == NULL) return(EFAULT); if (bn1->dat == NULL) ...
Como representar um valor hexadecimal como FFFFFFBB na programação de montagem x8
Estou aprendendo sobre programação de montagem em linha x8 Eu queria escrevermov ecx, FFFFFFBB, no entanto, o compilador não o reconhece. Como números hexadecimais como esse devem ser escritos no código assembler embutid
llvm reports: inline não suportado asm: entrada com o tipo 'void *' correspondente à saída com o tipo 'int'
Tenho o código de montagem embutido abaixo: int get_year(int a, int *b, char * c) { int ret, t1, t2; asm ( "addl %3, %[a] \n\t" "movl %[a], %[t1] \n\t" "movl $58, %%edx \n\t" "movb %%dl, 0x04(%1) \n\t" : [t1] "=r" (t1), "=&D" (t2) : [a] "r" ...
Merit do arredondamento ASM inline através da colocação de float na variável int
Eu herdei um pedaço de código bastante interessante: inline int round(float a) { int i; __asm { fld a fistp i } return i; } Meu primeiro impulso foi descartá-lo e substituir as chamadas por(int)std::round (pré-C ++ 11, usariastd::lround se ...
timestamp da Intel está lendo o exemplo de código asm usando mais dois registros do que o necessári
Estou estudando a medição do desempenho de benchmark usando o registro de carimbo de data / hora (TSR) encontrado nas CPUs x86. É um registro útil, pois mede em uma unidade monotônica de tempo, imune à mudança da velocidade do relógio. Muito ...
Operando estranho 'asm' tem erro de restrições impossível
Estou tentando compilar um programa C simples (Win7 32bit, Mingw32 Shell e GCC 5.3.0). O código C é assim: #include <stdio.h> #include <stdlib.h> #define _set_tssldt_desc(n,addr,type) \ __asm__ ("movw $104,%1\n\t" \ :\ :"a" (addr),\ "m" ...
Como ter o GCC combinado “move r10, r3; armazenar r10 "em um" armazenamento r3 "?
Estou trabalhando no Power9 e utilizando a instrução de gerador de número aleatório de hardware chamada DARN. Eu tenho o seguinte assembly embutido: uint64_t val; __asm__ __volatile__ ( "xor 3,3,3 \n" // r3 = 0 "addi 4,3,-1 \n" // r4 = -1, ...
xiste uma maneira de desativar o assembler embutido no GC
Estou desenvolvendo um sistema de juiz on-line para concursos de programação como LeetCode, Codeforces etc. Como na maioria dos concursos de programação, o assembler em linha não é permitido em C / C ++, então eu gostaria de adicionar a mesma ...
executing assembly dentro de uma função em c ++
long getesp() { __asm__("movl %esp,%eax"); } void main() { printf("%08X\n",getesp()+4); }por que esp aponta valor antes da configuração do quadro de pilha e faz alguma diferença entre o código abaixo? void main() { __asm__("movl %esp,%eax"); }