Recientemente he comenzado a aprender de la asamblea y vine a saber acerca de vinculador de secuencias de comandos y otros detalles de bajo nivel de programación de hardware. También estoy enseñando a mí mismo de arquitectura de computadores y en algún lugar a lo largo de la línea que me llegó a temer que mi imagen de la modelo de memoria que podría haber estado equivocado todo el tiempo.
De acuerdo a lo que entiendo en la actualidad, todo el código y los datos residen en la memoria no-volátil, después de que nos 'quemar' el binario en un procesador, la memoria RAM que está siendo volátil contiene nada en el momento del restablecimiento. Cuando se inicia el programa 'ejecutar' lo hace a partir de la dirección 0x0000, que es casi siempre (AFAIK) la dirección más baja en Flash. Así, las instrucciones se pegó a la conexión de bus de Flash para el núcleo de la CPU y es que, cuando la ejecución se lleva a cabo. Sin embargo, cuando hablamos de la CPU para recoger o almacenar datos de la memoria, normalmente estamos hablando de RAM - soy consciente de que podemos leer/escribir datos desde la memoria de programa (yo lo he visto hacer en AVRs), pero no es tan común? Es porque la memoria RAM es más rápida que la ROM que preferimos para almacenar datos?
El aceptó responder a esta pregunta, dice que la mayoría de los fragmentos de código que se ejecute fuera de la RAM.
¿Significa esto que el inicio de código de tiempo de ejecución (que en sí se ejecuta desde una memoria Flash) tiene que copiar todo el programa de opcodes de Flash a la memoria RAM y de alguna manera los mapas de las direcciones en Flash para que apunte a la memoria RAM para que la CPU recupera los códigos de operación a partir de ahí? Es similar al proceso en el que nos movemos el .secciones de datos de la ROM a la RAM en el inicio?
Me imagino que esto sea más sencillo de von Neumann arquitecturas donde el programa y memoria de datos, compartir un autobús, pero en Harvard arquitecturas no quiere esto decir que todo el código y los datos tienen que pasar a través de los registros de la CPU en primer lugar?
Como usted probablemente puede adivinar, estoy un poco confundido por todo este asunto. Tener siempre programado en un nivel superior de abstracción soy fácilmente preocupada con tales detalles. Cualquier ayuda es muy apreciada.