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 stacktype_global → objeto en sección .dataLas 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:
derived_1::derived_1): ya estaba hecho.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.get_counter: devuelve directamente el campo contador. Se renotó como derived_1::get_counter.get_valor_calculado: devuelve el campo contador × índice. Se renotó como derived_1::get_valor_calculado.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.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:
imprimir_only_test: solo imprime el string "this is only a test". Solo tiene this como argumento (nest_1*).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 |