Fil-C, una variante de C y C++ con seguridad de memoria desarrollada por pizlonator, incorpora compatibilidad con ensamblador inline manteniendo las garantías de seguridad. La función, aún en fase preliminar y no incluida en el lanzamiento 0.679, requiere compilar desde el código fuente.
El proyecto documenta los motivos por los que el ensamblador inline sigue siendo necesario en C y C++: impedir el análisis del compilador con bloques vacíos que actúan como barreras de memoria, invocar instrucciones cpuid y xgetbv para detectar funciones de la CPU, ejecutar aritmética sobre secretos en criptografía, declarar fences de hardware y acceder a funciones long double en x87. Muchos de estos usos son triviales desde el punto de vista de la seguridad porque no acceden a memoria ni alteran el flujo de control.
Para ofrecer esta compatibilidad, la pasada de instrumentación de Fil-C analiza la cadena de ensamblador y la cadena de restricciones en la representación intermedia de LLVM. Si detecta accesos a memoria, saltos o restricciones no reconocidas, rechaza el fragmento; en caso contrario, lo permite con comprobaciones de límites en los registros involved. Quedan fuera de alcance, por ahora, el ensamblador que accede a memoria, como atómicos y syscalls, para los que Fil-C ya ofrece APIs propias como pizlonated_syscalls.h. El autor describe la implementación como la primera del mundo que combina la potencia de la sintaxis de ensamblador inline de GCC y clang con seguridad de memoria completa.
