linux - una - Comprender la carga de arranque del sistema operativo: ensamblado
porque se descarga la bateria de mi carro si es nueva (1)
__start
es una etiqueta.
ldgp
significa cargar el puntero global en el ensamblaje Alpha .
call_pal
significa biblioteca de arquitectura con privilegios de llamada . Es un salto incondicional a un manejador de excepciones.
Más información en la Guía del programador de ensamblaje
Estoy tratando de entender más a fondo. Entonces, el arranque de Linux tiene que lidiar con un archivo de ensamblaje. Sé sobre mov, push, pop,
pero aquí estoy bastante perdido con esto:
.globl __start
.ent __start
__start:
br $29,2f
2: ldgp $29,0($29)
jsr $26,start_kernel
call_pal PAL_halt
.end __start
switch_to_osf_pal:
subq $30,128,$30
...
¿Estoy en lo correcto si digo que __start
es una etiqueta? Entonces, ¿se llamará tan pronto como se llame en otra paz de código? Intenté ldgp
en Google para entender los ldgp
, o call_pal
, pero no encontré nada. Finalmente, encontré en los archivos c que switch_to_osf_pal
se llama de esta manera switch_to_osf_pal(2, pcb_va, pcb_pa, VPTB);
¿Estas funciones que toman este parámetro llaman a la función de ensamblaje?
Disculpe si hay muchas preguntas, pero no encontré ningún documento claro