일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 마일섬
- 글루민
- PINTOS
- 핀토스 프로젝트 4
- 핀토스 프로젝트
- 글리치
- 핀토스 프로젝트 1
- 가테
- 아직도 실험 중
- 핀토스 프로젝트 3
- Project 1
- 끝
- 핀토스 프로젝트 2
- 황금 장미
- multi-oom
- 노가다
- botw
- alarm clock
- 바빠지나?
- 셋업
- 파란 장미
- 일지 시작한 지 얼마나 됐다고
- 자 이제 시작이야
- 내일부터
- 제발흰박
- Today
- Total
목록핀토스 프로젝트 2 (7)
거북이의 쉼터
음... 이번 매뉴얼은 뭔가 짧다. To implement syscalls, you need to provide ways to read and write data in user virtual address space. You don't need this ability when getting the arguments. However, when you read the data from the pointer provided as the system call's argument, you should proxied through this functionallity. This can be a bit tricky: what if the user provides an invalid pointer, a pointer i..
이전에 진행할 때, 핀토스는 x86 방식으로 구현이 되어있어, calling convention 또한 x86 방식을 따라서 구현했었다. 그러나 대대적 개편 이후 핀토스는 이제 x86-64 방식을 채택하게 되었다. 매뉴얼을 보면 이제 calling convention 또한 그에 맞춰서 되어 있는 것을 확인할 수 있다. x86-64 방식의 calling convention을 개략적으로 설명하자면 argument가 6개 이하일 때는 rdi, rsi, rdx, rcx, r8, r9 순서로 레지스터에 넣고 함수를 호출한다. 함수가 반환될 때, 리턴 값이 있을 경우, rax 레지스터에 값을 담아 리턴한다. 이런 상황에서 우리가 구현해야 할 것은 함수가 호출될 때 argument를 받아 레지스터와 스택을 구성하도록 ..
일주일만에 동숲으로 힐-링하다가 다시 돌아왔다. (입대할 때는 몰랐는데 이거 재밌네...) 프로젝트 1이 성공적으로 끝났으니 이제 다음 프로젝트를 시작해야한다. 예전에는 분명 프로젝트 1을 올리지 않은 raw 핀토스 위에 프로젝트 2를 짜는 것이 가능했는데 이제부터는 허용되지 않는 모양이다. You must build project 2 on top of your project 1 submission. Although no code from project 1 affects code for project 2, you still have to pass test cases for project 1 because this is an incremental project. 또 뭔가 extra project 같은 것이..