CS Study ( 외부에서 참고/ 인용한 글은 출처/ 라이센스를 정확하게 표기 해주세요.)
- 이진 덧셈기 , 진법 변환기
https://gist.github.com/conyconydev/f751a8cfe3c1fdfd6734b7c783e009bc
- 피드백 : 비트를 어떤 순서로 저장하느냐는 컴퓨터 내부에서도 중요한 이슈입니다. CPU에 따라서 비트 순서를 빅엔디안, 리틀엔디안으로 결정하게 됩니다. 그러면 지금은 hex2bin()으로는 덧셈을 할수 없는건가요?
- 답: 지금 미션에서 구현한 걸로는 현재 hex 데이터를 빅 엔디안 방식으로 표현하려고 16진법에서 2진법으로 변환한 데이터를 역순으로 정렬하여 빅엔디안 방식으로 표현하였습니다. 덧셈을 하는건 가능하지만 이전에 작성한 이진 가산기를 사용하기 위해서는 다시 리틀엔디안으로 데이터를 저장하면 덧셈이 가능합니다
- 각 명령어 동작은 ARM Assembly 명령어 정리를 참고하였습니다.
- CPU 명령어는 각 자리에 해당하는 비트 자리의 값을 추출하기 위해서 해당 값을 비트 &연산을 사용하여 추출한 후 쉬프트 연산으로 분리했습니다.
- 메모리는 힙영역과 텍스트 영역을 따로 할당하지 않고, 하나의 공간을 할당 받은 뒤 주소로 영역을 구분하여 사용하였습니다.
- HexViewer 클래스를 따로 만든 이유는 메모리안에 데이터를 볼때 오프셋을 추가하여, 보기 쉽게 하기위해서 따로 구현하였습니다.
- 메모리 및 cpu의 기본 동작은 cs 페이지와 구글에서 검색하여서 공부했습니다.
STEP01 할때와는 다른 어려움이 있었던것 같습니다.
STEP02 는 자세히 들어갈수록 제가 구현한 메모리 및 cpu는 아주 일부분에 불과하다는 것을 알게 되었습니다. 게다가 각 칩마다 ASM 명령어가 차이가 있다는 것을 알게되었습니다. 좀 긴 시간을 가지고 자세히 학습하여 정리할 필요가 있을것 같습니다. (일주일동안 봤지만, 더 자세하게 공부를 해야될것 같습니다 ㅠㅠ...ㅜㅜ.. 너무 어렵다아아아아ㅠ)