Considere la regla gramatical E → E1 – E2 para expresiones aritméticas. El código generado está dirigido a una CPU que tiene un único registro de usuario. La operación de resta requiere que el primer operando esté en el registro. Si E1 y E2 no tienen ninguna subexpresión común, para obtener el código más corto posible
(A) E1 debe evaluarse primero
(B) E2 debe evaluarse primero
(C) La evaluación de E1 y E2 necesariamente debe intercalarse
(D ) El orden de evaluación de E1 y E2 no tiene consecuencias
Respuesta: (B)
Explicación:
E -> E1 – E2
Dado que E1 y E2 no comparten ninguna subexpresión, el uso más optimizado del registro de usuario único para la evaluación de esta regla de producción solo se produciría cuando E2 se evalúe antes que E1. Esto se debe a que cuando tengamos E1 evaluado en el registro, E2 ya se habría calculado y almacenado en alguna ubicación de memoria. Por lo tanto, podríamos usar la operación de resta para tomar el registro de usuario como primer operando, es decir, el valor E1 y E2 de su ubicación de memoria a la que se hace referencia mediante algún registro de índice o alguna otra forma de acuerdo con la instrucción.
Por lo tanto, la respuesta correcta debería ser (B) E2 debería evaluarse primero.
Esta solución es aportada por .
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA