Quién compilador interno no puede ser salvado? El C / C ++ y compilador de JavaScript al programa A | Vida 2020

Léame |  Yang Xiaobing

Editar | Wu Xingling

Exposición | RDCC (ID: CSDNnews)

Nota del editor antes:

El compilador está conectado a un puente entre el mundo humano y el mundo de la máquina, que puede ser de alto nivel de los programadores de lenguaje entienden, convertida en la ejecución del programa en código máquina eficiente. En el compilador de C / C ++, hay VC, Borland C ++, GCC, Watcom C / C ++ compilador y otro compilador de desarrollo propio extranjera popular, pero menos doméstica.

Después de todo, el desarrollo de un compilador práctica no es fácil, implica léxica front-end, el análisis sintáctico, análisis semántico, una gran cantidad de trabajo de optimización del compilador. Y hay un equipo dispuesto a gastar más de diez años de esfuerzo de investigación y desarrollo de un compilador y YC YC núcleo del navegador completamente independiente.

¿Por qué no escatimar esfuerzos para compilador de D independiente de I + y el núcleo del navegador? ¿Qué ventajas tiene este compilador? Por debajo de la  YC  uno de los principales autores del compilador - Yang Xiaobing, para contar la historia detrás de esta larga década de investigación y desarrollo de carreteras.

El siguiente es el Yang Xiaobing readme:

Mente: "hacer algo para ayudar al progreso de las cosas la industria del software."

Hace diez años, trabajé en el Instituto de Electrónica, Academia de Ciencias de China, que participan en el diseño de un hardware. Yo estaba mucho más interesado en hardware y software, especializada en software de negocios después del trabajo.

Me encontré con el proceso de la iniciativa empresarial, aunque este tipo de software puede hacer para ganar dinero, pero al hacerlo no importa qué, al progreso de la ciencia y software no son el más mínimo efecto. A pesar de pagar mucho, pero no tiene sentido de logro.

sistemas operativos, bases de datos, compiladores y del núcleo del navegador no es una experiencia especial para desarrollar muy difícil, el más básico de los productos de software.

Quiero elegir entre varios programas de una parte de la investigación y el desarrollo principal, aunque no estoy seguro de qué hacer con los logros, pero espero ser útil para hacer algunos avances en la industria del software algo para que ellos mismos pasos que vale la pena en este software industria. Dadas las circunstancias, me parece que el navegador puede comenzar con el kernel para empezar, por lo que además de mantener los productos existentes, pero el principal esfuerzo en investigación y desarrollo en el navegador.

Innovación código C incrustado en HTML

Dos años más tarde , se desarrolló el núcleo del navegador de funciones básicas, tales como el análisis de HTML y visualización, tales como la ejecución de scripts de JavaScript.

En este punto, nos encontramos con estándar HTML cada vez más complejos, lo que lleva al desarrollo de cada vez más difícil, de acuerdo con este desarrollo, el núcleo del navegador no estará en el mercado.

Así que volver a pensar: Si el lenguaje C de procesamiento de imágenes scripts de JavaScript incrustado en HTML, hacer con la interfaz C hipertexto código HTML de software embebido, haciendo de este el núcleo debe ser un poco la ventaja competitiva.

Así que pasamos dos veces y media la implementación estándar de C JavaScript de una manera similar en HTML, HTML etiquetas y expanda a: <usuario>, cada usuario puede especificar un archivo de origen etiqueta C con el atributo src, etiquetas de usuarios la interfaz de pantalla y todos los actos de su código de decisión C.

Mientras que el  C  compilador define como una función, que la función se compila utilizando  C  programa de código ejecutable, el código de ejecución puede ser almacenado en un archivo o directamente ejecutado. En este punto, hemos llamado a YC compilador de compilador, kernel navegador llamado navegador YC.

Tres años por otros tres años, el camino de desarrollo a largo

Posteriormente, continuamos mejorando el núcleo del navegador, algunos de los cuales será independiente de la ejecución del código del núcleo dinámicamente compilado con el compilador incorporado, y la mayor parte del código fuente del núcleo es de código abierto.

Al mismo tiempo, tenemos un problema: YC compilador para compilar más rápido sin embargo, sino que se genera el código de bytes, lleva a cabo lentamente, y con el llamado código nativo entre sí (especialmente las funciones de devolución de llamada) proceso es bastante engorroso. Así que con YC era difícil ganar el compilador para compilar el código de trabajo de Ren Kaiyuan.

Con el fin de resolver el problema del compilador de código del núcleo del navegador, decidimos modificar YC compilador, por lo que es el código de bytes se convierte en la ejecución de código nativo, y la sintaxis extendida, de modo que tenga una pequeña cantidad de sintaxis de C ++. El trabajo duró tres años.

Tres años más tarde, YC compilador características para aumentar, ya que proporciona una llamada de función a la función de biblioteca de vínculos dinámicos en el código fuente en C como un llamado directo. En este momento, la parte central del navegador de código abierto puede ser utilizado en el compilador en tiempo real para compilar YC a cabo.

Continuamos mejorando el núcleo del navegador, la velocidad es muy lenta bytecode JavaScript en lugar de código nativo binario, la velocidad de ejecución de JavaScript acerca aumentó aproximadamente 100 veces . El navegador de código del núcleo mientras que todos compilador ejecución YC abierta y modular, cada módulo se compila dinámicamente, el compilador es también fuente parcialmente abierta (bytecode por ejemplo, código fuente ensamblador en línea, el código fuente desmontaje, C / C ++ ejecución de código fuente, etc.), todos de código abierto detectado automáticamente por el compilador compilador incrustado YC realiza dinámicamente. Este trabajo tomó cerca de cuatro años.

Desarrollo hasta ahora, creo que los navegadores de Google y Firefox están abiertas, ¿por qué no echar un vistazo a su código fuente? Así que encontrar la fuente de estos dos navegadores.

En ese momento, por alguna razón, analizo Google código fuente del navegador no se compila, y el código fuente de Firefox para compilar tenido éxito muy bien, así que tomé el análisis de código fuente de Firefox de la carretera.

Descargar el código fuente de Firefox es puro código C y C ++ compone de dos partes, el Visual C ++ 2013 compilador genera un archivo firefox.exe xul.dll y un archivo.

I primero analizo su código C, todas las funciones de salida al grupo de todas las interfaces y permitir en tiempo real xul.dll compilar YC Compiler YC_cppLoad (), a continuación, llamar a las funciones de interfaz de clase en código fuente C. Este paso se realizó sin problemas, si se modifica el código de Firefox C, siempre y cuando la re-ejecutar Firefox tenga efecto, ninguna otra acción.

Una vez que el escritorio

El siguiente Firefox empezar a analizar el código C ++. YC implementos compilador sólo unos pocos C ++ de sintaxis, Firefox no puede compilar código C ++, es muy difícil analizarlos.

¿Por qué código de Firefox C fácil de analizar, y el código de su C ++ es difícil analizarlo? Originalmente, lo uso YC compilador generará archivo C código ensamblador de código, archivo de estructura de definición de variables, los archivos de definición de macro y archivos precompilados a través de estos archivos, lo que reduce en gran medida la dificultad de análisis.

Así que una vez más decidió modificar YC compilador de manera que es totalmente compatible con el estándar de C ++ 11 código C ++ porque Firefox utiliza casi la totalidad de C ++ 11 características de sintaxis. En primer lugar el uso STL código de biblioteca de plantillas estándar para modificar y compilador de depuración de forma inesperada, este proceso realmente tomó tres años!

Después de eso, empiezo con YC ++ compilador de depuración de código C ++ Firefox. STL pensó código sea menos complejo puede compilar y ejecutar correctamente, el código de Firefox C ++ debe ser capaz de compilar rápidamente. No esperaba, no utilizar una gran cantidad de la gramática en AWL, mientras que Firefox utiliza el código fuente de C ++. Por lo que continúan modificando YC compilador, cada módulo compilado de C ++ Firefox, este proceso duró más de un año .

Mientras YC compilador puede compilar todo el código de Firefox C ++, pero la manera de generar el código de implementación? Comenzando con el programa principal inicio Firefox.cpp, después de terminar, este programa puede YC compilador genera la ejecución de código Firefox.exe, y puede funcionar sin problemas.

Dado que los módulos de Firefox C ++ estrechamente unidas, es difícil de dividir, después de más de un mes de trabajo, sin embargo, puede dividirse en múltiples módulo de fuente independiente con el fin de utilizar YC compilación en tiempo de compilador, ejecución dinámica, esto puede ser mi Firefox estructura general del código fuente en C ++ Tampoco está claro, por tanto, que vio su bosque por los árboles.

Yang Xiaobing

Cuando me estaba preparando para Firefox código C ++, una vez más el análisis general, existe la posibilidad de participar en el desarrollo de un sistema de gestión de la escuela, debido a los sistemas de gestión existentes a menudo fallan, el funcionamiento es extremadamente incómodo. Aunque no existe una experiencia de desarrollo de programa de servicio Web, pero lo hago con el software de servidor Web tiene una gran relación.

La comprensión de este sistema de gestión para desarrollar el software necesario: Apache o el servidor Nginx, MySQL u otras herramientas de programación de bases de datos tales como ASP o JSP o PHP, por lo que inspirados por nuestra propia investigación y el desarrollo de estas herramientas. La Y- C del compilador y HTML C / C ++ y JavaScript analizador viene muy bien.

Con el tiempo, un establo, de manera arbitraria, escalables de múltiples subprocesos simultáneos del servidor HTTP es completa. El servidor procesa el archivo YSP navegador web para la generación de pasar.

PSY es mi diseño y funciones ASP, JSP y PHP como un lenguaje de programación web. YSP realiza servidor de archivos YC incrustado en C / C ++ o código JavaScript, HTML genera hipertexto transmitida al dispositivo terminal. Después de la herramienta así, y pronto se hizo un prototipo de sistema de gestión, el prototipo se puede ver en el compilador YC publicada.

Después de hacer el trabajo anterior, creo que es el momento de escribir este libro nos dice sobre el compilador YC, escrita durante un período de tiempo "compilador YC - Programación Multi-Language" (nombre provisional) próxima.

Cuando terminé el libro, inmediatamente se ponen en el desarrollo de 64 bits C / C ++ y compilador de JavaScript, el desarrollo avanza a buen ritmo, ha entrado en la fase de prueba.

Posdata del Editor:

Tres años, se pueden convertir en un rebote bebé lloriquear y niños pequeños, puede ser ignorante de un nuevo lugar de trabajo se convierte en veteranos tranquilas. Y Yang Xiaobing disipador de equipo en el corazón, las dificultades, pasó tres años y tres años, y entonces uno, dos o cuatro años sólo para romper a través de una dificultad técnica, y en última instancia compilador de auto-desarrollo y un núcleo navegador YC YC.

En este proceso, Yang Xiaobing admitió que el mayor reto es no sólo un muy técnico, así como el pensamiento. Durante este periodo no sólo tienen una gran cantidad de trabajo de desarrollo, sino también optimizar, en varias ocasiones volver a escribir el código, por lo que quería seguir con ella para el desarrollo de la ciencia software contribuir a la originalidad.

Actualmente Yang Xiaobing equipo está desarrollando compilador de C ++ 64-bit C /, hablando sobre el futuro, Yang Xiaobing representa la primera en el país para promover, y luego ir al extranjero. bendición Yang Xiaobing.

YC compilador Portal: http: //www.ycbro.com

【Final】

"Plan de Trabajo [el segundo trimestre] - la capacidad de aprendizaje Challenge" comenzó!
A partir de ahora hasta el 21 de marzo debe fluir para apoyar el autor original, la exclusiva [más] medalla esperando a que reto

lectura recomendada 

retrato realista de China de los desarrolladores: Java Changsheng, prefieren el sistema operativo Windows, rara vez participan en proyectos de código abierto

nueva propagación de la corona mundial, AI + Big Data ¿Qué puede salvar a la humanidad? | Tecnología de IA teoría ecológica

El sobrecalentamiento Para vivir con las mercancías, Jingdong decir que me puedan ayudar

no necesitan datos de entrenamiento de movimiento en 3D, el último método de estimación de la postura del cuerpo humano para lograr SOTA | CVPR 2020

Cómo decir adiós y liebres son nulas? Gran Dios resultó estar haciendo!

De la función hash, la colisión de hash, el hash abierto, el artículo hash que indica qué pensamientos y tabla hash se construye en la final!

Nos fijamos en cada punto, en serio como favorito

Liberadas 1807 artículos originales · ganado elogios 40000 + · Vistas 16,330,000 +

Supongo que te gusta

Origin blog.csdn.net/csdnnews/article/details/104788072
Recomendado
Clasificación