El compilador Microchip está basado en GCC, y por lo tanto su fuente está abierta. Microchip agregó algunas de sus propias cosas para las optimizaciones más avanzadas, pero el compilador básico es gratuito y su fuente está disponible.
Tratar de ser un proveedor independiente con compiladores de microcontroladores también es un poco tonto. Sí, C es más o menos un estándar, pero las mejoras deben realizarse en cualquier instancia particular para usar bien la arquitectura. Habrá algunas diferencias de código fuente requeridas entre las diferentes familias de microcontroladores, sin importar qué compilador utilice. El hecho de que dos compiladores se basen en GCC no significa que el código de la aplicación sea compatible con el código fuente.
En el mejor de los casos, la compatibilidad del código fuente se aplicará a las declaraciones C genéricas y aritméticas. Sin embargo, la mayor parte del firmware incorporado en sistemas tan pequeños con recursos limitados administrará los periféricos de hardware especializados. Ese código será específico para esa familia, y algunas veces para la parte, por su propia naturaleza. La compatibilidad con C general es exigente para el 5% de la solución e ignorar el problema del 75% de portar entre diferentes dispositivos en primer lugar.
Además, no tiene mucho sentido exigir que el código fuente del compilador esté abierto. ¿Realmente vas a entrar allí y hacer cambios? Es mejor dejarlo en manos de los expertos que trabajan a tiempo completo. Para un proyecto personal único, tiene sentido usar un compilador gratuito, pero luego la mayoría de los proveedores tienen cierto sabor de compiladores gratuitos. Todos los compiladores de Microchip tienen versiones gratuitas que solo difieren de las completas en que algunas de las optimizaciones avanzadas están desactivadas. En la mayoría de los casos esto es irrelevante. Si está superando los límites, entonces, para un uso único, utilice el siguiente chip de aumento de tamaño, y siempre hay un ensamblador disponible si realmente necesita el espacio de código y la velocidad para partes específicas del sistema.