[Linux] 컴파일러(Complier) 소개
By Guillermo Austin Kim | 2018년 5월 1일 |
소프트웨어에 입문하는 분들은 컴파일러란 단어를 매우 자주 들을 가능성이 높습니다. 왜냐면 현업에서 가장 많이 쓰는 단어 중 하나이거든요.그럼 컴파일이란 단어를 영한 사전으로 찾으면 "안내서를 만들다.", "책을 편집하다."란 의미입니다.그러면 "컴퓨터에게 편집해서 안내서를 만든다"란 문장으로 컴파일이란 단어를 조합할 수 있는 것 같습니다. x86, ARM과 같은 CPU가 해석할 수 있는 것은 오로지 명령어이며, 이는 비트 패턴인 기계어를 뜻합니다."프로세스는 이미 정해진 특정한 비트 패턴에 반응한다"란 의미로 특정 비트 패턴을 명령어라고 부를 수 있습니다. 조금 쉽게 설명을 드리면 CPU는 여러가지 전기적 스위치로 구성돼 있으며, 어떤 특정한 전기 스위치를 작동시키려면 데이터 버스 선을 따라 전압이 "있
[라즈베리파이] 인터럽트 핸들러 등록(2) - #CS
By Guillermo Austin Kim | 2018년 5월 25일 |
[라즈베리파이] 인터럽트 핸들러 등록(1) - #CShttp://rousalome.egloos.com/9976901에서 계속 ... 이번에는 다른 코드를 입력해서 인터럽트 핸들러와 인터럽트 디스크립터에 대해 알아볼게요. 다음 패치는 인터럽트 핸들러를 등록한 후 바로 해당 인터럽트 번호로 인터럽트 디스크립터를 커널 함수로 읽어와 인터럽트 설정 정보를 출력합니다. 제대로 인터럽트 핸들러를 등록했는지 점검하고 싶을 때 활용하면 좋은 코드입니다. 파라미터가 인터럽트 번호이므로 인터럽트 번호만 대입하면 다른 함수에서도 호출할 수 있죠. 이제부터 코드를 어떻게 작성했는지 함께 살펴볼까요? 우선 dwc_otg_driver_probe 함수 위에 다음 코드를 입력합니다.1 static void interrupt_de
[Linux][Kernel] 스택 푸쉬(Stack Push) Userspace -> Kernel Spapce
By Guillermo Austin Kim | 2017년 12월 5일 |
커널에서 어떤 코드던 프로세스가 실행되는 운동장은 스택이에요. 프로그램이 실행되면서 스택에 Push/Pop 동작을 엄청나게 자주하는데요. 예전 실리콘 벨리에서 어떤 스타트업 회사가 기획했던 아이디어라고 하는데요.리눅스 커널 API를 하드웨어로 처리하는 아이디어를 구현하려고 했다고 하네요. 그 아이디어의 근거는 리눅스 커널에서 자주 사용하는 API는 몇 개로 한정되어 있다는 거에요. 그럼 너무 자주 실행되는 함수면 어떤 동작을 자주 할까요?스택 Push/Pop이 겠죠. 그래서 inline을 함수를 쓰는 거에요. inline 함수는 컴파일러가 호출되는 함수 내에 inline 함수를추가하기 때문에 스택 Push/Pop 동작을 줄 일 수 있어요. 대신 inline 함수의 심볼 정보는 찾을 수 없죠. 대부분의
[기능소개]SecureBIM Family Server (Assembly 패밀리 관리)
By iDwgTools Programs (for AutoCAD) | 2018년 1월 2일 |
안녕하세요. 무술년(戊戌) 새해가 밝았습니다. 올해에도 항상 건강하시고 행복하시길 바라겠습니다. 오늘은 Revit Assembly 패밀리를 관리하는 방법과 사용 방법에 대해서 소개해 볼까 합니다. 예전에 가구에 대해서 입면도와 3D뷰를 포함한 쉬트를 래빗에서 표현하려고 했는데 래빗 프로젝트에서 특정 가구에 대해서만 표현하기가 어려웠습니다. 외국 블로그에는 래빗 프로젝트에 가구를 한 개 배치하고 입면도/좌측면도/3D를 쉬트에 구성하는 방법을 소개한 글이 있습니다. 한 공간에 대상 객체가 많을 경우에는 이 방법이 효과적이지 않다는 느낌을 받았습니다. 이와 같이 프로젝트의 특정 부분만 상세도를 구성할 수 있는 기능이 래빗에는 준비되어 있었고 바로 Assembly(조합) 기능 입니다. Assembly와 Gro