Acabo de empezar a jugar con ASM y no estoy seguro de si mi comprensión de las llamadas a procedimientos es correcta.¿cómo funcionan las llamadas a procedimiento en el ensamblador?
dicen que en algún momento en el código no es una llamada a procedimiento
call dword ptr[123]
y el procedimiento consiste en un solo comando, ret:
ret 0004
cuál sería el efecto de esta llamada a procedimiento , y donde se almacenaria el valor de retorno? He leído en alguna parte que un valor de retorno de 2 bytes se almacena en AX, pero cuando se sustituye la llamada a procedimiento por
mov AX, 0004
(junto con los necesarios NOP) el programa se bloquea.
gracias! la mayoría de los tutoriales que busqué en Google simplemente usaban ret, y no explicaban el funcionamiento inmediato de de. Me confundí aún más cuando el ensamblador LLVM aparentemente tenía un comando "ret". –
int3
¿Hay alguna razón por la cual RET puede regresar a algún lugar que no sea la llamada? Acabo de crear una pregunta y encontré esto en las preguntas relacionadas – lisovaccaro
sí, si manipuló la dirección de retorno que 'CALL' insertó en la pila. –