저는 Mac OS 용 C/C++에서 NES 에뮬레이터를 작성하고 있습니다 (이미 하나를 작성 했으므로 기본을 알고 있습니다). 많은 하드웨어 레지스터가 메모리 위치에 매핑되어 있기 때문에 주소를 함수 결과에 매핑하는 데 사용할 수있는 시스템 호출이 있는지 궁금합니다. 액세스 할 때 함수가 호출됩니다. (나는 할 수 없습니다 확신 해요,하지만 헤이, 그것은 물어 가치가있다.)주소를 함수의 결과에 매핑 할 수 있습니까?
여기는 내가하고 싶은 것입니다 :이 프로젝트는 LLVM에서 내 시도가 될 것입니다
int getStatusRegisterValue()
{
return 0xCAFEBABE;
}
// obviously, more parameters than just this would be involved I suppose
int* statusRegister = syscall_to_map_function_to_address(getStatusRegisterValue);
// from here on, doing (*statusRegister) should call getStatusRegisterValue and
// return its value
*statusRegister == 0xCAFEBABE;
, 그리고 내 목표는 LLVM 바이트 코드에 ROM을 다시 컴파일하는 것입니다. 단순 메모리 액세스가 실제 NES 하드웨어처럼 기능을 트리거 할 수 있다면 편리 할 것입니다. 내 문제를 해결하기위한 또 다른 두 가지 가능성은 레지스터 값을 캐시하여 실제 메모리에 저장하거나 다시 컴파일 된 코드에서 함수를 호출하여 메모리 위치를 실제 위치에 매핑하는 것입니다.
감사합니다.
C/C++과 같은 것은 없습니다. –
@wowus : "C/C++"은 "C++과 C의 상호 작용"을 요약하는 좋은 방법입니다. 나는 Objective-C와 그 언어에 포함 된 집회의 꼬집기가 될 것이라고 덧붙여 야합니다. – zneak
몇 가지 샘플 코드를 보여줄 수 있습니까? 또는 유스 케이스? 나는 이것을 아주 시각화 할 수 없다. –