00010TJAQ_uIjjPw.es.srt

Este video es una sesión de renombramientos y configuración de vtables del ejercicio 5, limpiando lo que quedaba pendiente del análisis estático anterior.


Renombramientos en main:

Las tres funciones principales se identificaron por las strings que imprimen al inicio:

  • type_pointer → objeto en el heap (creado con new)
  • type_stack → objeto en el stack
  • type_global → objeto en sección .data

Las tres reciben el mismo valor random como argumento.


__AutoClassInit:

Se configuró como método de derived_1: se le seteo el this como derived_1*, el segundo argumento como size, y se renotó como derived_1::__AutoClassInit. Esta función zeroea la estructura completa.


Métodos de derived_1 — análisis y renotación:

Se analizaron las 5 funciones de la vtable de derived_1:

  1. Constructor (derived_1::derived_1): ya estaba hecho.
  2. function_counter: tiene un do-while con un índice que va de 0 a random. Setea dos campos: uno que actúa como contador (valor final = random) y otro que es contador × índice (valor final = random * (random-1)). Se renotó como derived_1::function_counter.
  3. get_counter: devuelve directamente el campo contador. Se renotó como derived_1::get_counter.
  4. get_valor_calculado: devuelve el campo contador × índice. Se renotó como derived_1::get_valor_calculado.
  5. imprimir_case: toma un valor, lo divide por 3, y según el resto (0-3) imprime el case correspondiente usando un switch. Se renotó como derived_1::imprimir_case.
  6. Destructor (derived_1::~derived_1): tiene un flag como segundo argumento; si es distinto de 0, hace free. Internamente probablemente libera también el objeto Nest.

Vtable de derived_1:

Se colocaron los nombres de las funciones en la estructura derived_1_vtable para que al usar la vtable se vea directamente qué función se está llamando.


Métodos de Nest — análisis y renotación:

La vtable de Nest tiene 2 funciones:

  1. imprimir_only_test: solo imprime el string "this is only a test". Solo tiene this como argumento (nest_1*).
  2. imprimir_hello: imprime "hello from nest". Mismo patrón, solo this.

Ambas se configuraron con Edit Function Signature eliminando los argumentos no utilizados, se les seteo el tipo del this como nest_1*, y se renotaron dentro del namespace nest_1.


Estado final de las vtables:

Clase Funciones en vtable
base No se analiza (nunca se instancia directamente)
derived_1 Constructor, function_counter, get_counter, get_valor_calculado, imprimir_case, destructor
nest imprimir_only_test, imprimir_hello