Assembly
배열 포인터
GuTTe
2018. 6. 11. 19:01
@pointer1_00401500: ;<= Procedure Start
PUSH EBP
MOV EBP,ESP
AND ESP,0FFFFFFF0h
SUB ESP,030h
CALL @pointer1_00401EB0 ;<= Jump/Call Address Not Resolved
MOV BYTE PTR SS:[ESP+02Fh],0Ah
MOV BYTE PTR SS:[ESP+02Eh],014h
MOV DWORD PTR SS:[ESP+018h],1 ;1,2,3,4를 차례대로 생성한 공간에 값을 넣는다.
MOV DWORD PTR SS:[ESP+01Ch],2
MOV DWORD PTR SS:[ESP+020h],3
MOV DWORD PTR SS:[ESP+024h],4
LEA EAX,DWORD PTR SS:[ESP+018h] ; 이차원배열의 시작주소를 잡는것인가(뇌피셜) 그리고 EAX레지스터에 넣는다.
MOV DWORD PTR SS:[ESP+028h],EAX ; 값을 메모리에 넣어서 저장
MOV EAX,DWORD PTR SS:[ESP+028h] ;
ADD EAX,0Ch ; *(parr[1]+1)이라서 그크기만큼 12를 더함 총 변수 크기 16.
MOV EAX,DWORD PTR DS:[EAX]
MOV DWORD PTR SS:[ESP+4],EAX ;
MOV DWORD PTR SS:[ESP],pointer1_00404000 ; ASCII "%d
"
CALL printf ;<= Jump/Call Address Not Resolved
MOV EAX,0
LEAVE
RETN ;<= Procedure End