stack-pointer

    2

    1답변

    OpenCV 라이브러리, Boost 라이브러리 및이 LINK에서 다운로드 한 코드 파이브를 사용하여 응용 프로그램을 작성하고 있습니다. 나는 Thunk32와 같은 솔루션에서 프로젝트를 생성하고 난 다음 파일이 있습니다 MainProject.cpp #include "stdafx.h" int main(int argc, char** argv) {

    1

    4답변

    저는 지금 당분간 어셈블리를 연구 해왔고 그걸 이해하기 시작했습니다. 그러나 이해할 수없는 한 가지 이 작은 프로그램 (& T 구문 AT, 64 비트 GNU 컴파일러로 컴파일 된 코드를) pushq %rbp movq %rsp, %rbp subq $48, %rsp call __main movl $0, -4(%rbp) movl $4, -8(%rb

    26

    2답변

    코드의 조각을 감안할 때 : 왜 우리는 기본 포인터에 8을 추가하여 첫 번째 매개 변수의 주소를 얻은 다음 12를 얻는가? 나는 그들이 각각 4 바이트라는 사실을 알게되었다. 그래서 ebp + 8에서 ebp + 12로 만들면 센세이션을 만든다. 하지만 첫 번째 것이 ebp + 8 인 이유는 무엇입니까? ESP가 스택의 TOP를 가리키는 경우 mov ebp,

    -1

    2답변

    나는 C 코드를 통해 프로그램의 특정 트레이스에 사용 된 레지스터의 수를 알아 내야 만했다. push 또는 pop 명령이 발생할 때마다 ESP 레지스터를 저장하는 것을 무시했다. 또한 X86 명령어를 참조했다. 그리고 거기에 "ESP, 스택 포인터,"사용해서는 안된다. "왜?"

    0

    1답변

    스택 포인터가 원래 위치로 다시 이동했지만 스택에 저장된 값이 메모리에서 레지스터 파일로 다시로드되지 않으면 어떻게됩니까? 스택 포인터가 뒤로 이동하면 값이 스택 메모리에 계속 남아 있습니다.

    4

    1답변

    C 함수를 사용하는 동안 어셈블리에서 작은 프로그램을 만들지 묻습니다. 그렇게하는 동안 특정 것에 대해 궁금해하고있었습니다. 나는 조립 작업을 할 때, 나는 C 함수를 호출하여 원하는 목적지, 나는 그것이 스택에 인수를, 그리고 함수가 반환 된 후 나는 그 인수를 팝업 (4 × Xesp에 추가해야 추진해야한다는 것을 알고있다 여기서 x은 푸시 된 인수의 수

    1

    1답변

    dds esp 또는 그 64 비트 상대방 dqs rsp의 원시 출력을 제대로 이해하고 있는지 확실하지 않습니다. 스택의 항목 목록을 볼 때 반환 주소를 볼 때마다 그 코드는 이 아직 반환하지 않은 코드라고 가정하는 경향이 있습니다. IOW, 그들을 함께 묶어서 좋은 호출 스택을 형성해야합니다. (지금은 k*의 Windbg 명령 그룹으로 귀찮게하지 마십시오.

    1

    1답변

    저는 x86 스택과 CDECL 규칙을 읽고 혼란스러워하는 것을 읽었습니다. 나열된 호출자의 책임 중에서 매개 변수를 사용하거나 매개 변수를 사용하여 매개 변수를 가져 오거나 단순히 % esp를 증가시켜 매개 변수를 제거했습니다. 마지막 파트는 어떻게 작동합니까? 예를 들어 % esp의 초기 값이 0x105000이고 현재 스택 프레임에 대해 $ 0x1c만큼

    2

    1답변

    그래서 extern C 함수를 호출하는 어셈블리 프로그램을 작성해야합니다. 그래서 간단한 pow 함수를 작성 했으므로이 C 코드로 어셈블리 프로그램을 컴파일했습니다. 모든 것이 작동합니다. 그러나 -S 명령 (gcc)에서 알 수 있듯이 컴파일러는 로컬 변수를위한 공간을 만듭니다. int func(int number) { int a = 10;

    1

    2답변

    그래서 최근에 C 코드와 MIPS 코드에서 이진수 1을 계산하는 코드를 만들었습니다. 나는 C에서 나머지 값을 사용하고 count_one 변수를 증가시킨다. MIPS에서는 같은 프로그램을 만들었지 만 1의 모든 값을 계산할 때까지 숫자의 바이트를 이동했습니다. Howver, 포인터를 사용하는 법을 배우려하지만이 개념을 파악할 수는 없습니다. .data