Mejor respuesta
Pregunta: ¿Qué significa 01001001 en código binario?
Respuesta: ¿En qué contexto?
01001001 en e IBM 360 es hexadecimal 49 o CH, que es el código de operación Compare Half Word. Se ingresa en una tarjeta IBM como 12–1–8 punch.
01 001 001 Agrupado como octal es 1 1 1, por lo que en un CDC 600 esto sería «A9»
En los datos de campo de un Univac, este sería el carácter «D»
¿Qué es el contexto?
Respuesta
Windows 10 ya se está ejecutando como código binario (máquina idioma). Fue compilado desde código fuente (principalmente C y C ++) hasta código máquina (binario) utilizando compiladores optimizados.
Entonces, la pregunta es … ¿podría una persona (en realidad, un gran equipo de expertos con un gigantesco presupuesto y mucho de tiempo) reescriben Windows 10 desde cero en lenguaje de máquina y logran un mejor rendimiento que el lenguaje de máquina generado por los compiladores de optimización utilizados hoy en día.
Los optimizadores son muy buenos en estos días, tan buenos que puede ser difícil encontrar código generado que pueda optimizarse manualmente para funcionar mejor y con el mismo nivel de confiabilidad. Tenga en cuenta que hay aproximadamente 50 millones de líneas de código fuente de lenguaje de alto nivel en Windows 10, y cada una de esas líneas puede traducirse potencialmente a muchas líneas de lenguaje ensamblador, y cada línea de lenguaje ensamblador generalmente se traduce entre una y varias. bytes de código de máquina.
Con todo esto en mente, si estamos hablando de una reescritura completa del sistema operativo desde cero en código de máquina, el 99\% (o más) del esfuerzo no resultaría más código de máquina eficiente, por lo que parte del esfuerzo se desperdiciaría. Y el 1\% restante de los casos en los que el código podría funcionar mejor tendría un costo astronómico. Y eso si pudieras encontrar suficientes expertos con suficiente conocimiento de la arquitectura para escribir ocasionalmente un código mejor que el que puede generar el compilador de optimización.
Si alguien (o algún equipo) intentara esta tarea, el enfoque correcto sería Sería utilizar herramientas de creación de perfiles para buscar cuellos de botella vinculados a la CPU en el sistema operativo, observar detenidamente el código generado por el compilador y ver si algún ajuste manual del código (o un cambio en las opciones de optimización del compilador) podría mejorar el rendimiento.
Desde aproximadamente 1989, Microsoft ha tenido un equipo para analizar cuidadosamente el rendimiento de varios componentes del sistema operativo, buscar cuellos de botella y realizar mejoras en esas áreas.
Esa es la forma correcta de Optimice el software en general: Mida, busque cuellos de botella y vea qué se puede hacer con cada uno.
Simplemente reescribir un producto de software gigante en un lenguaje de bajo nivel es una gran pérdida de tiempo y recursos .