Articles of compilateur construction

Système d’exploitation / compilateur moderne où int (en C) n’est pas 32 bits?

La question est en réalité un peu plus large. Sur la base de l’expérience des 15 dernières années, je suppose actuellement que la taille des types est la suivante: byte = 8 bit short = 2 bytes int = 4 bytes long long = 8 bytes Existe-t-il un système d’exploitation moderne où cette hypothèse peut […]

Meilleure façon de travailler avec un format intermédiaire

Un outil sur lequel je travaille doit prendre le format intermédiaire généré par le compilateur, y append du code, puis donner ce code intermédiaire modifié au back-end du compilateur pour générer le code final. En faisant quelques recherches sur gcc, j’ai découvert que le format GIMPLE est facile à comprendre, mais je ne suis pas […]

Comment charger un programme en mémoire à une adresse différente de celle à laquelle il est destiné?

Généralement, les fichiers binarys du programme utilisateur seront chargés à l’adresse basse (généralement autour de 0x400000 ) dans l’espace adresse du programme qui sera spécifié dans le fichier binary elf (dans le cas de Linux). Pouvons-nous forcer un utilisateur binary à se charger à une adresse élevée, éventuellement dans la plage d’adresses de 2GB où […]

Pourquoi différents compilateurs C peuvent-ils donner différents résultats pour un programme C?

J’ai un doute sur la raison pour laquelle il arrive que différents compilateurs donnent différentes sorties à un même programme C. S’il existe un C standard, pourquoi ces fameux compilateurs ne l’utilisent pas complètement. la différence de sortie est provoquée par les compilateurs 16 bits, 32 bits, alors quels sont tous ces problèmes qui font […]

Comment inclure la bibliothèque curl dans mon projet C dans des blocs de code (Windows)?

La question semble simple. J’ai essayé beaucoup de choses simplement pour inclure curl dans mon projet C en utilisant code :: blocks ide mais en vain. J’aimerais utiliser la bibliothèque de cURL pour mon projet d’application de console qui nécessite des fonctionnalités http. Si quelqu’un l’a fait avec succès, votre aide est grandement appréciée. 🙂 […]

Les déclarations de fonction implicites dans C génèrent-elles réellement un code object?

Au cours de cette discussion sur la conversion de la valeur de retour de malloc nombreuses personnes ont affirmé que la déclaration implicite de malloc entraînerait la conversion de la valeur de retour en int puis sa reconversion en T* ce qui pourrait éventuellement tronquer le pointeur dans les cas suivants: sizeof(int) < sizeof(void*) Cela […]

Quelle est l’utilisation de la section de code pragma et de la section de données?

Qu’adviendra-t-il exactement du segment de données et du segment de texte si j’utilise les deux lignes ci-dessous dans mon fichier de code source c? #pragma CODE_SECTION(func1, “Sec1”) #pragma DATA_SECTION(globalvar1, “Sec2”)

Quelle est la différence entre – 1) le préprocesseur, l’éditeur de liens, 2) le fichier d’en-tête, la bibliothèque? Ma compréhension est-elle correcte?

D’accord, jusqu’à ce matin j’étais parfaitement confus entre ces termes. Je suppose que j’ai la différence, espérons-le. Premièrement, la confusion était que, puisque le préprocesseur inclut déjà les fichiers d’en-tête dans le code contenant les fonctions, quelles fonctions de la bibliothèque l’éditeur de liens est-il lié au fichier object produit par l’assembleur / compilateur? Une […]

Adresse de (&) donne l’adresse générée par le compilateur ou l’adresse générée par le chargeur?

int a; printf(“address is %u”, &a); Quelle adresse est-ce ..? Je veux dire s’agit-il d’une adresse générée par le compilateur, c’est-à-dire une adresse virtuelle ou le chargeur donné à une adresse physique dans la RAM …? Comme il imprime une adresse différente à chaque fois, je suppose que cela doit être adresse dans la RAM. […]

Le compilateur Borland C 5.5 ne fonctionne pas

J’utilise Windows 7-64 bits. Borland C ++ 5.5 ne fonctionne pas. Fichier de test Hello.c #include int main(void) { printf(“Hello world!\n”); return 0; } Erreur E2209 Hello.c 1: impossible d’ouvrir le fichier d’inclusion ‘stdio.h’ Avertissement W8065 Hello.c 5: Appel de la fonction ‘printf’ sans prototype dans la fonction principale * 1 erreurs dans la compilation […]