Dans Borland, il existe une macro __emit__ , “une pseudo-fonction qui injecte des valeurs littérales directement dans le code de l’object” ( James Holderness ). Existe-t-il un équivalent pour gcc / g ++? (Je n’arrive pas à en trouver un dans la documentation) Sinon, comment pourrais-je l’implémenter dans mon code source C ++? L’utilisation peut […]
J’essaie de voir si dans notre compilation il y a un gain entre l’écriture x/3.0 contre const double one_over_three = 1.0 / 3.0; x * one_over_three; Mais j’ai besoin d’un peu d’aide pour lire l’assemblage, ce que je n’ai pas appris. J’ai compilé int div3(double x) { const double three = 1/3.0; return x*three; } […]
Considérez le code suivant, en C ++: #include std::size_t count(std::size_t n) { std::size_t i = 0; while (i 1 ? std::atoll(argv[1]) : 1); } C’est juste une boucle qui incrémente sa valeur et la retourne à la fin. L’ asm volatile empêche l’optimisation de la boucle. Nous le clang++ 5.0 sous g++ 8.1 et clang++ […]
Je ne comprends pas pourquoi obtenir l’adresse d’une variable est correct et que l’autre me renvoie 0xD qui se bloque alors en écrivant une valeur à une adresse non valide (0xD dans r.thefn(0); ). C’est la sortie qui montre les deux variables n’ayant pas une adresse similaire. Voici ce que GDB a montré et la […]
J’ai compilé et analysé la sortie de l’assemblage pour: struct S{ public: int a,b,c,d,e,f,g,h,i,j,k; }; int main() { S s; std::atomic as; as.store(s); return 0; } Je veux voir comment est-il implémenté atomic store en fait. Il est facile d’aligner de “petits” opérandes. Mais maintenant, nous avons un opérande plus large, donc la situation est […]
J’essaie de créer des versions légèrement modifiées de certaines fonctions de la bibliothèque CRT VS2010. Tout va bien, sauf pour les parties où elle tente d’accéder à une variable globale qui contient vraisemblablement la version ISA (Instruction Set Architecture Version): if (__isa_available > __ISA_AVAILABLE_SSE2) { // … } else if (__isa_available == __ISA_AVAILABLE_SSE2) { // […]
J’apprends l’assemblage et la programmation bas niveau et je lis un livre à ce sujet . Il est dit ici que nous pouvons placer n’importe quelles données dans la section .text d’un fichier elf mais, bien sûr, nous ne pouvons pas les transformer en raison d’permissions différentes des pages / segments. Mais il n’a pas […]
Je suis intéressé à démarrer mon propre projet JIT en C ++. Je ne suis pas si peu familiarisé avec l’assemblage, la conception du compilateur, etc., etc. pointeur de fonction. Alors, quelles sont les meilleures ressources pour créer une telle chose? Edit: Pour le moment, je ne m’intéresse qu’à x86 sous Windows, qui s’étendra un […]
Aujourd’hui, j’ai voulu recomstackr l’un de mes projets. La compilation de ce projet avait déjà fonctionné sur ma machine, mais cette fois une erreur est survenue. La sortie du compilateur va: fatal error: as: unknown host architecture (can’t determine which assembler to run)` pour la ligne: g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB […]
J’ai donc un programme très basique écrit en C (fichier .c) avec une partie de codage d’assemblage en ligne. Je veux convertir le fichier .c en sortie d’assemblage que je connais mais ne sais pas comment comstackr ce code pour un environnement Linux. Lorsque j’utilise gcc ou g ++ pour des fichiers .cpp, des erreurs […]