os제작중 궁금한점이 있습니다.
글쓴이: csm4338 / 작성시간: 수, 2013/05/01 - 11:34오전
char *a="asdf"; int i; char *video=(char*)0xB8000; for(i=0;a[i]!='\0';i++) { *video++=a[i]; *video++=0x0f; }
커널은 위에 소스처럼 간단하게 만들었습니다. asdf라는 문자열을 출력하면 되는건데요.
커널 컴파일은 visual studio로 해서 PE구조로 돼있는데 .text영역에 있는 코드를 실행하기만 하면 되기때문에 커널로 넘어가는건 문제가 없었습니다.
근데 문자열 출력하는데서 문제가 있네요. 소스처럼 하면 이상한 문자가 출력되고 PE 구조에서 .rdata영역에있는 문자열의 위치를 직접 지정해줘야 문자열이 제대로 출력됩니다. 궁금한건 제생각에는 .rdata영역에 있는 데이터를 사용하기위해서는 .text영역에 거기에대한 정보가 있어야 가능하다고 생각했는데 PE view로 찾아봐도 그런내용은 안보이네요. 다른 조작없이 저 소스코드 그대로 실행해서 문자열이 출력되게 할 방법이 없을까요?
다른 OS 제작해보신 분들은 어떻게 해결하셨나요?
Forums:
댓글 달기