Windows에서 Linux로 프로젝트를 이식하려고합니다. 코드를 다음의 repo에 호스팅합니다 : Nspire Emu. 일부 컴파일 오류를 해결할 수 있었지만 많은 기능을 다시 구현해야하며 이해할 수없는 부분이 있습니다.인라인 어셈블리 설명
frame
변수 유형 정의 : 인라인의
typedef struct { void *prev, *function; } os_exception_frame_t;
조각은 이해가 안 조립 : 누군가가 나를 앞의 코드를 이해하는 데 도움한다면
asm ("movl %%fs:(%1), %0" : "=r" (frame->prev) : "r" (0));
asm ("movl %0, %%fs:(%1)" : : "r" (frame), "r" (0));
난 정말 감사하겠습니다. 미리 감사드립니다.
gcc와 visual c 컴파일러의 인라인 어셈블리 구문이 다릅니다. 필자는 컴파일러의 문서에서 시작하여 올바르게 작동하며 대상으로하는 컴파일러에서 요구하는 형식으로 변환합니다. – Jay
힌트를 보내 주셔서 감사합니다. 이것은 mingw gcc를 사용하여 Linux에서 컴파일되었으므로 Windows와 Linux 모두에서 코드를 컴파일 할 수 있습니다. 그게 문제가 아니에요. 문제는 그 코드의 실제 의미입니다. 나는 최근에 fs : 0이 SEH가 Windows에서 일어나는 곳이며, 이제 코드가 무엇인지 알고있다. http://feepingcreature.github.io/handling.html을 참조하십시오. 시간과 인내심에 감사 드리며 제 질문에 답변 해 주셔서 감사합니다. PD : 평판 때문에 대답 할 수 없습니다. –