El acceso a las estructuras es más directo en el montaje. Yo diría que sí. Así es más fácil. Y si necesita bibliotecas de cualquier tipo, simplemente úselas como las usaría en C.
Lo único que leo y escucho a menudo desde mediados de los 80 es: “No puedes escribir el código de ensamblado a mano, posiblemente sea mejor de lo que te da tu compilador”. Y con respeto, una completa tontería si lo piensas. Lo sé, no es culpa de las personas que repiten este mantra, se repitió desde que fui a la universidad y eso fue hace 30 años.
Pero simplemente piénsalo por un momento. Si tienes la habilidad mínima para ensamblar, siempre puedes dejar que el compilador haga la primera ejecución, echar un vistazo a la basura que produce y cortar las esquinas. Un novato total en Assembly puede hacer esto y obtendrá una velocidad promedio de 20 a 50% de eso. Así. Si él sabe lo que está haciendo y no estoy hablando de una experiencia de ensamblaje de por vida, más o menos algunos meses, en muchos problemas vencerá al compilador con factores del 3 al 5 y eso es totalmente realista. Si es un compilador de mierda con un lenguaje de mierda y hay problemas, que realmente encajan en Assembly es fácilmente un factor de 100 o 1000. Si realmente entiendes la fuerza de tu idioma, puedes hacerlo.
Si está en un sistema integrado, es posible que necesite esta aceleración. Y no es mucho más lento codificar, como principiante, y de hecho, a veces incluso más rápido codificar como un codificador experimentado.
- ¿Qué puedo hacer como titular de primer grado de psicología en los Estados Unidos?
- ¿Cuál es la importancia del ‘refuerzo secundario’ en psicología?
- ¿La visión binaria de Gary Klein sobre los narcisistas del cluster-b es precisa y aceptada en la comunidad psicológica más amplia?
- ¿Cuáles son algunas formas de generar confianza para ir ‘contra el grano’?
- ¿Influyen los genes en cuánto afecta a alguien su entorno?
No me malinterpretes, los compiladores reales (GCC) son muy rápidos para un pequeño robot despistado y despistado, pero son solo eso. Y ese es su límite. Nunca debes subestimar las ideas que están programadas en él, que son nombres “optimización de mirilla”, que son trucos realmente geniales y que debes aprender totalmente de él. Pero él solo tiene algunos de ellos, eso es todo.
Eres mejor que eso. No te permitas comparar o incluso reducir los trabajos de una máquina sin sentido. Eres un programador, un programador, con el don del arte y la imaginación. Vas a vencer a la mierda de cada compilador.
Pero ¿por qué asamblea?
No escribiría todo en ensamblaje, pero algunas cosas son mucho más fáciles. Al igual que los siguientes punteros, hardware de lectura, lectura o escritura de bytes en puertos, la programación de registros de hardware y todas las comunicaciones con el sistema son mucho más fáciles de ensamblar.
En C solo tienes este puntero abstracto y eso no te lleva a ninguna parte. No puedes ver lo que realmente está sucediendo, no tienes los números y es difícil depurar la mierda que compila tu compilador. Y si cambias una bandera en el compilador, todo tu código cambia y no sabes dónde está todo.
Es un desastre. Entonces, es posible hacer el trabajo duro en HLL, me refiero a que no es tan malo como Python o Lisp en este contexto, pero le falta mucha información. Y te faltan las banderas, también. No llevar, no cero, solo nada. Es para mí como volar ciego en una nube. No puedes ver nada y la mala respuesta que te da tu compilador, simplemente no es lo mismo.
Entonces sí.
Es más fácil en el montaje, pero, por supuesto, hay que saberlo. Para un principiante en ensamblaje, puede ser bastante difícil. Y en este momento no conozco a nadie, que sigue siendo un verdadero revuelo en la arquitectura moderna de Intel. La mayoría de la gente pudo, bueno, hace 20 o 30 años. Esas son todas las cosas de 32 bits que encontrarás en la web.
Cada exploit que encuentro está compilado -m32, ¿adivina qué? Todo copiar y pegar cosas. El código real se ha vuelto raro. Y con ese codificador real. Y con eso algunos manuales de trabajo y documentación. Estamos de vuelta a la piratería real en ese campo.
Hackers reales, solo hay muy pocos alrededor. La mayoría se han vuelto grises.
Entonces, antes de que realmente puedas cosechar el poder de la asamblea, tienes que morderte a través de esta pared de arroz alrededor de la tierra donde está la leche y la miel. Pero después de que hayas hecho eso, las cosas se volverán mucho más fáciles.
Especialmente porque puedes simplemente aplicar ingeniería inversa a las cosas que hacen toda la diversión, eso no está documentado pero funciona. Y eso, naturalmente, se ejecutará en ensamblaje y no en C. No hay C en el bytecode. Bueno, hay una C pero esa es la letra. No es el idioma. 😀