Las CPU VAX tenían un sistema de manejo de excepciones basado en la pila. En cada marco de llamada, se asignó una celda de 32 bits y se llenó con un cero. Si la subrutina a la que se llamaba deseaba manejar excepciones, todo lo que tenía que hacer era completar esa celda con la dirección de la rutina de manejo de excepciones.
Cuando se produce una excepción, se produce una búsqueda de pila. Esto fue fácil, ya que los marcos de pila estaban todos encadenados juntos. El primer marco de pila con una entrada distinta de cero provocaría que una pila se desenrollara hasta ese punto, y se llamaría al manejador de excepciones.
Recuerdo que esta era una de las características del procesador que estaba dirigida a lenguajes de nivel superior, pero no sé si había un lenguaje de nivel superior que aprovechaba la función. Creo que fue utilizado por el código de la biblioteca, que probablemente habría sido escrito en ensamblador.
De una manera un tanto re-empaquetada, esto es principalmente un duplicado de http://stackoverflow.com/questions/1449951/what-language-was-the-first-to-implement-exception-handling – mjv
¡Gracias! Pero también agradecería las respuestas a las preguntas 3 y 4. – Frunsi
+1 para buena publicación. –