목록C (2)
psj2867
환경은 linux, glibc(2.37) 기반으로 작성되었습니다. 목차 1. 작성동기 2. 전체적인 내용 3. 매우 간단한 설명 4. 간단한 설명 5. 조금 자세한 설명 6. 자세한 설명 6.1. 코드 관점(컴파일러, 컴퓨터 구조) 6.2. 운영체제 관점(운영체제) 6.3. 프로세트 관점(컴퓨터구조) 7. 정리 8. 나중에 추가할 내용 9. 후기 1. 작성동기 대부분의 컴퓨터 언어를 배울 때 가장 먼저 해보는 것은 printf("Hello, world!") 또는 print("Hello, world!") 입니다. 많은 언어 및 프로그램에서 test 라는 문구 대신 사용하는 유명한 문장이죠. 당연히 저도 c언어를 배우고 printf를 사용했습니다. 그리고 의문이 생겼습니다. 이게 왜, 어떻게 출력되지? 사실..
java의 실행 구조를 궁금하다보니 jit 를 찾아봤고 jit 방식이 미리 native machine code 를 만들고 실행시키는 것을 알았다. 그럼 machine code 를 실행 임의로 실행할 수 있는 걸까 일단 실행이 가능한지 부터 알기 위해 c 언어 기준으로 살펴봤다. 해보고 싶은 것은 char bytes[] = { 1,2,3,4 }; int(*f)(void) = (int(*)(void))bytes ; f(); byte 를 함수로 인식하고 호출하는 것이다. 우선 bytes 에 들어갈 byte 코드 부터 만들어야 했다. 위의 코드를 실행할 같은 환경에서 int f2(){ return 3; } 이 코드르 컴파일 및 분석한다. gcc -shared test.c -o tset.out && objdump..