cdecl

    4

    1답변

    GCC cdecl 호출 규칙에서 호출이 반환 된 후 스택에 밀어 넣은 인수를 그대로 사용할 수 있습니까? ASM과 C를 혼합하고 최적화 (-O2)를 사용할 때도? 한마디로

    1

    1답변

    오늘 인터뷰에서 이와 같은 질문이 있습니다. #include <stdio.h> int main(void) { char *s="123456790"; printf("%c,%c",*(char *)((int *)s+++1),*s); return 0; } 내 대답은 5,1이지만 면접자가 5,2라고 말했습니다. 물론 C에서 기본

    0

    3답변

    그냥 빨리 x86을 떠나야하는 동반자가없는 이유는 무엇입니까? 그런 식으로, pushl %ebp movl %esp,%ebp pushl $3 leave ret 이 될 수 : enter #or something pushl $3 leave ret 이 그 일반적으로 단지 빨리 아닌가요?

    0

    1답변

    는 여기로 이동 : http://cdecl.org/ 입력 : char (*arr)[5] 출력 : 에 "어레이 (5)은"이란 문자의 어레이 (5)에 대한 포인터로 선언 편곡? 이것은 단순히 5 개의 요소가있는 배열을 의미합니까?

    2

    1답변

    int, char 등의 임베디드 타입은 레지스터를 사용하여 함수에서 반환 될 수 있지만 함수가 큰 객체를 반환하는 경우는? 나는 프로세스의 스택이 그런 문제에 사용될 수 없다고 제안한다. 맞습니까? 누구든지 객체가 피 호출자에게 어떻게 전달되는지 설명 할 수 있습니까?

    1

    1답변

    cdecl 호출 규칙을 사용하는 함수를 작성 중이므로 함수를 호출하기 전에 레지스터의 상태가 유지되는지 확인해야합니다. 제 질문은 이것이 일반적으로 수행되는 방식입니다. 함수 시작시 스택에있는 레지스터를 밀어 넣은 다음 함수 끝에서 레지스터로 꺼내는 것입니까?

    1

    1답변

    내가 이런 식의 x86 어셈블리에 void f(int a, int b, int c) { g(a, b, c); h(a, b, c); } 말해봐 : g가 호출 규칙을 cdecl 규칙을 다음과 section .text f: pop dword [res_1] call g ; g(a, b, c) call h ; h(a, b, c)

    4

    3답변

    32 비트 Windows 응용 프로그램에서 stdcall 호출 또는 cdecl이 될 수있는 외부 함수를 호출하는 코드를 작성해야합니다. 발신자 인 내 코드는 앞으로 어떤 것이 될지 미리 알 수 없습니다. 지금 stdcall로 정의 된 호출 사이트에서 cdecl 함수를 호출하려고하면 checkEsp 예외 대화 상자가 표시되고 그 이유가 여기에 있습니다. 할

    1

    1답변

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

    0

    1답변

    일부 센서가있는 프로젝트에서 작업 중이며 USB를 통해 PC에 연결하려고합니다. 이제 그들은 c로 작성된 windows lib가 있고 모든 함수는 c의 cdecl 호출 규칙을 사용하고 있으며 다른 언어 (java!)의 programm를 사용하면 호출 규칙이 주어 졌는지 확인해야합니다. 그래서 약간 연구하고 자바에서 DLL을 바인딩하고 JNA를 사용하는 자습