Отладка приложений


Ссылки на структуры и классы - часть 2


Ниже используются прямые

 // смещения на языке ассемблера, чтобы показать, 

// на что они похожи в дизассемблере. 

// Встроенный ассемблер позволяет применять

 // нормальные ссылки формата <struct>.<field>. 

// С-код: pSt->dwFirst = 23 ;

 MOV DWORD PTR [EAX] , 17h.

 // С-код: pSt->iVal = 0x33 ; 

MOV DWORD PTR [EAX + 0104h] , 0x33

 // С-код: strcpy ( pSt->szBuff , szName ) ; 

LEA ECX , szName // Поместить szName в стек.

 PUSH ECX .

LEA ECX , [EAX + 4] //. Получить доступ к полю szBuff.

 PUSH ECX 

CALL strcpy

ADD ESP ,8 // strcpy есть _cdecl функция.

// С-код: pSt->szBuff[ 1 ] = 'A' ; 

MOV BYTE PTR [EAX + 5] , 41h

 // С-код: printf ( pSt->szBuff ) ;

MOV EAX , pSt // Получить pSt обратно. EAX был разрушен

// при обращении к strcpy. 

LEA ECX , [EAX + 4]

 PUSH ECX

CALL DWORD PTR [printf]

ADD ESP , 4 // printf есть _cdecl-функция.

 } 

 }

 




Начало  Назад  Вперед