Resultados da pesquisa a pedido "inline-assembly"

1 a resposta

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 ...

1 a resposta

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) ...

4 a resposta

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

2 a resposta

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" ...

1 a resposta

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 ...

2 a resposta

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 ...

1 a resposta

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" ...

1 a resposta

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, ...

1 a resposta

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 ...

1 a resposta

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"); }