이 매개 변수와 함께 호출되고 난'전화'명령은 내가 (연결되지 않은) 간단한 D 스크립트를 분해 한
나의 이해call
에서
call 1e <_Dmain+0x1e>
는 현재 스택을 밀어 어셈블리의 이상한 조각 (인텔 구문)을 찾을 수 있습니다 기본 포인터를 스택에 넣고 매개 변수로받은 주소로 점프합니다.
이 call
명령은 2 개의 매개 변수를 사용하는 것처럼 보입니다. 그게 뭐야?
전체 기능 :
는0000000000000000 <_Dmain>:
0: 55 push rbp
1: 48 8b ec mov rbp,rsp
4: 48 83 ec 10 sub rsp,0x10
8: c7 45 f8 05 00 00 00 mov DWORD PTR [rbp-0x8],0x5
f: c7 45 f8 06 00 00 00 mov DWORD PTR [rbp-0x8],0x6
16: 48 89 ef mov rdi,rbp
19: e8 00 00 00 00 call 1e <_Dmain+0x1e>
1e: 31 c0 xor eax,eax
20: c9 leave
21: c3 ret
22: 66 0f 1f 44 00 00 nop WORD PTR [rax+rax*1+0x0]
'<_Dmain+0x1e>'은 디스어셈블러가'1e' 주소가'_Dmain'의 오프셋 0x1e에 해당한다고 말하는 것일뿐입니다. – Michael
이들은 두 가지 인수가 아닙니다. '<_Dmain+0x1e>'은 디버깅 된 실행 파일의 관점에서 해석 된 호출의 주소입니다. –
@DanielKamilKozar 그러면 다음 작업 (1e)을 호출하지 않겠습니까? –