El programador Cat hace que el programa salte a la posición inicial.

Establezca el fragmento de código inicial al principio.

1. Primero ingresa al enlace del directorio y ejecuta make para generar el código de desensamblado ttt.s, con la opción "-Ttext 0x00000000".

Luego, modifica el Makefile: elimina el "#" en las líneas 4 y 7, agrega "#" antes de las líneas 3 y 6, ejecuta make para generar el código de desensamblado ttt2.s, arma The -linux- La opción ld es "-Ttext 0x30000000". En el programa link.s se utilizan dos métodos de salto: instrucción de salto B y asignación directa al registro de la PC.

Luego, primero enumere los códigos de desensamblaje de los archivos ejecutables generados bajo diferentes opciones "-Ttext", y luego analice en detalle las diferencias causadas por estas dos instrucciones diferentes.

Luego, deje que la primera imagen comience desde el extremo izquierdo y la dirección de desplazamiento sea de izquierda a derecha, de modo que la primera imagen y la última imagen estén conectadas entre sí. Ahora, una vez completado un desplazamiento, la imagen se desplaza nuevamente desde el extremo derecho al extremo izquierdo.

Entonces, en la aplicación, las direcciones iniciales de la pila y el montón son consistentes. Sin embargo, el núcleo en sí no tiene otro programa de nivel superior para administrar el espacio de direcciones del núcleo, por lo que la organización de la pila del espacio del núcleo es diferente de la del programa de aplicación. Si la pila del kernel se desborda, no puede hacer lo que hace la aplicación: generar un error de página y luego asignar un nuevo espacio de direcciones para su uso continuo. Si la pila del kernel se desborda, nadie lo sabrá a menos que el desbordamiento afecte las operaciones y bloquee el programa.

Más tarde, la expansión del espacio del montón se basó en la llamada al sistema brk(), utilizando la memoria del kernel y get_free_pages (aunque la capa superior encapsulaba kmalloc y vmalloc), que era básicamente autoadministrable. Debido a que el kernel de Linux no admite el intercambio propio, el kernel no tiene forma de encontrar marcos de página disponibles.

"text/javascript" src="/style/tongji.js">