모비우스 부트캠프 

안녕하세요!

벌써 11월이 다 지나고 12월을 맞이할 준비를 해야 하는 11월의 마지막 날이네요!!

시간이 정말 빠르게 가서 저는 조금 버겁기도 한 것 같아요ㅎㅎ (。﹏。*)

 

이번 서포터즈 활동으로는 저의 공부 일기를 준비해 보았습니다!


11월의 공부 일기 - 회고 편

11월에는 제 생일이 있었답니다!! 그래서 그 생일 한 주를 통으로 놀다 보니,,, 시간이 훨씬 더 순식간에 지나갔던 것 같아요ㅎㅎ..

그래서 즐겁긴 했지만, 저의 발전에는 큰 기여를 못했던 한 달이여서 아쉬움이 많이 남는 한 달이었던 것 같아요.

 

모비우스 부트캠프에서 매월 초에 진행하는 월간 회고 회의에서 저의 10월 회고록을 보니 저는 달라진 게 없더라고요......

강의 미리 듣기 미루지 말기를 적어놨었는데, 하하하... ^^

여전히 조금씩 미뤄져서 빡빡하게 강의를 마지막 주에 몰아보는 저를 확인할 수 있었답니다....

( 작성하면서 이 부분은 정말 반성하고 고쳐야겠다고 다짐했습니다...ㅜㅜ)

 

집에서 강의를 보니까 집중도 못하고, 강의도 많이 듣지 못하는 것 같아서

마지막 주에는 겨우 겨우 정신을 잡아서 스터디 카페를 끊기 시작했어요. ( ❗ 정말 추천드립니다  ❗ )

 

그래도 뿌듯했던 점도 하나 생각나는 건 저의 티스토리를 보시면 알겠지만,  여전히 백준 문제는 주말 빼고는 꾸준히 풀고 있답니다! 

그리고 마지막주에 논문 2개 발표도 끝내서 후련하다는 점! 히히 


11월의 공부 일기 - 공부 편

저는 모비우스 부트캠프 강의를 들으면서 꼭 하는 게 있는데요!

그건 바로~~ 노션에 정리입니다!!!

 

저는 공부를 할 때 무조건 정리를 해야만 제 머리에 남는 편이라, 

학교에서 시험공부를 할 때나 다른 공부를 할 땐 무조건 탭에 손으로 필기를 했었는데요.

손으로 필기를 하면 제가 너무 글씨는 쓰는 속도가 느려서 정리하는데 오래 걸리더라고요..ㅜㅜ (훨씬 공부는 더 잘 되긴 합니다!)

 

그래서 속도 측면을 개선하기 위해서 생각했던 필기 방법이 타자로 쳐서 조금은 더 빠르게 정리를 할 수 있는 노션이었습니다!

저처럼 정리를 해야만 머리에 들어오시는 분!! 

혹은 이 질 좋은 강의를 내 머릿속에만 저장하기 아깝다고 생각하시는 분!!

노션을 써보세요!!!

 


|  노션 정리

지금부터 제가 노션을 어떻게 쓰고 있는지 소개해 볼게요!!

먼저 저는 이렇게 제가 들을 강의들을 새 작업을 이용해서 작업들을 만든답니다!!

 

작업을 만들 때, 저는 완전 주관적인 기준으로 우선순위를 정합니다.

그리고, 만약 강의 듣기와 정리가 정말 완벽하게 잘 된 것만 상태를 완료로 바꿔줍니다.

 

이때, 강의에 pdf를 포함하는 강의가 있다면 pdf에 필기를 하고, 정리는 조금 후순위로 두고 있습니다! 

만약 pdf가 있는 강의는 필기만 한다고 다 된 것이 아니라, pdf 필기를 노션에 다시 정리하는 과정까지를 상태 완료로 보고 있습니다!

 

다음으로는 각각의 작업 기록입니다!

 

먼저 모비우스 부트캠프에 있는 강의의 내용 및 설명을 붙여주고,

강의 목차하위 작업에 작성해 줍니다.

하위 작업은 체크박스로 구성되어 있어서 만약 강의와 정리가 다 되었다면, 그때 체크해 주는 방식으로 하고 있습니다!

 

그리고 하위 작업에 있던 강의 목차들을 강의 기록에 토글 제목 1에 복사해서 강의 리스트를 만들어줍니다.

현재 듣고 있는 강의에 맞는 토글을 열어서 정리를 해줍니다!

그리고 꿀팁으로 ctrl + F 버튼을 누르면 내가 찾고 싶은 내용을 찾을 수 있어서 다시 보고 싶은 정리나,

기억이 안나는 부분은 저는 이런 방식으로 찾아서 다시 읽어보기도 좋아요!!!

 

저는 이런 방식으로 강의를 정리하면서 제 머리에 넣어 공부하고 있답니다!!

 

사실 이렇게 정리하는 것도 정리다 보니 시간이 걸리는 것은 어쩔 수 없는 것 같아요.

그래서 저는 1시간 강의라면 2시간 30분 정도는 잡아놓고 듣는 편입니다.

왜냐하면 정리만 한다고 강의를 안 듣는다면 그건 말짱 도루묵이니까, 강의도 듣고 이해한 후 정리하는 과정을 거치다 보니 시간이 그 정도 걸리는 것 같아요.

ㅎㅎ 그래서 자꾸자꾸 늦어져서 마지막에 급하게 하지만요.... ㅜㅜㅜ

 


|  강의 

저는 이번 11월에 C언어 응용, git, git 응용, 자동차사이버보안 기초 강의를 수강했는데요!

저는 이번에 강의를 들으면서 정말 정말 유익했던, 너무 흥미로웠던 강의는 C언어 응용이었습니다. (진짜 최고..)

그래서 제가 정말 너무 유익했던 부분 정리한 부분을 소개합니당 ꒰ᐡ⸝⸝ɞ̴̶̷ ·̫ ɞ̴̶̷⸝⸝ᐡ⑅ ꒱

 

C 언어 응용 - 함수 호출의 원리 

(정리를 보시려면 더 보기를 눌러주세요!!)

더보기

C 언어 응용 - 함수 호출의 원리 

main1.c

#include <stdio.h>

#ifdef __unix__
#define asm_main _asm_main
#endif 

int asm_main(void); 

int main(void){
	int n = asm_main();
	printf("result : %d\n", n);
}

함수 만들기

  • Windows 환경의 C 언어(cl, gcc)에서 호출 하려면 함수 이름 앞에 _를 붙이고, global 지시어로 선언 해야한다.
  • 어셈블리 파일 내부에서만 사용하기 위해서는 위의 규칙을 지키지 않안도 상관없다.

 

함수를 호출하는 방법

1. jmp 명령을 사용한 함수 호출

; asm3.asm 

segment .text
	global _asm_main
	
_asm_main:
	; 다른 함수 foo 호출
	;mov  ebx, AAA ; AAA : 돌아올주소 ; 이건 돌아올 주소를 register에 넣음
	push AAA ; 이건 돌아올 주소를 stack에 넣음.
	jmp  foo
AAA: 
	ret
	
foo:
	mov  eax, 300
	pop  ebx ; stack에서 꺼내서 ebx에 넣기
	jmp  ebx
  • 함수호출
  1. “jmp 함수이름”
  2. 돌아올 주소를 알려 주어야 한다.
  3. 돌아올 부분의 주소를 표현하기 위해 label을 만든다.
  • 돌아올 주소를 전달하는 2가지 방법
  1. 돌아올 주소를 레지스터에 담아서 전달
  2. 돌아올 주소를 스택(stack)에 담아서 전달stack(스택)

 

2. call 명령을 사용한 함수 호출

; asm3.asm 

segment .text
	global _asm_main
	
_asm_main:
	; 다른 함수 foo 호출
	call  foo
	ret
	
foo:
	mov  eax, 300
	
	ret
  • call 명령의 원리
  1. 돌아올 주소를 스택에 담아 놓고 함수로 이동
  • ret 명령의 원리
  1. 스택에서 돌아갈 주소를 꺼내서 해당 주소로 이동

=> call은 jmp에 stack을 사용한 원리

 

 

정리

  1. jmp를 사용한 방법 - 돌아올 주소를 알려 주어야 한다.
    1. 돌아올 주소를 레지스터 에 담아서 전달
    2. 돌아올 주소를 스택(stack) 에 담아서 전달
  2. call/ret를 사용한 방법
    1. 돌아올 주소를 스택에 담아서 전달하는 방식과 동일
  3. C언어로 작성된 코드의 어셈블리 코드를 확인하는 방법컴파일러 빌드 방법 출력파일
    gcc gcc call.c -S call.s
    cl cl call.c /FAs call.asm
    C 언어에서 함수 호출 시
    • call/ret 방법을 사용하여 함수 호출이 됨.
    // call.c
    
    void foo(){} ret
    
    int main(void){
    	foo(); // call _foo
    }
    

 

 

stack(스택)

  • 프로세스가 생성되면 OS는 자동으로 스택 메모리를 하나씩 생성(정확히는 스레드 당 한 개씩 생성됨)
  • 어셈블리 소스에서 push/pop 명령으로 접근.

사실 어셈블리 언어는 어떤 수업, 강의를 들어도 이렇게 자세히 알아본 적은 없었어요. 

근데 이 강의를 듣고 정말 메모리 그 자체에 대해 이해를 할 수 있었습니다.

 

막연하게 수업 중에 이건 stack메모리에 들어가고 ~ 이건 heap 메모리에 들어가~ 이렇게 설명으로 듣고 아 그렇구나 하는 게 아닌,

어떻게 이 C 코드가 어셈블리언어로 바뀌고 이 어셈블리어에서 변수들을 어떤 식으로 stack에 넣는지를 잘 알 수 있는 강의여서 

훨씬 C를 잘 이해할 수 있는 시간이었던 것 같아요!!

 

저는 C++을 학교 다니면서 2학년 때 배운 적이 있지만, 기억이 가물가물해지고 프로젝트 때도 python이나 java를 주로 써왔습니다. 그래서 C 언어를 제대로 배우기 시작한 것이 이 티스토리를 시작한 7월이었는데, 이 모비우스 부트캠프 시작 전까지만 해도 포인터도 제대로 익히지 못한 C 언어 초보였답니다..ㅎㅎ

모비우스 부트캠프에서 C언어 강의를 듣고 정말 완벽히는 아니겠지만, 어떤 언어보다 깊이 있게 배우고 있는 것 같아요! 

C언어 기초와 C언어 응용은 정말 정말 추천하는 강의랍니다!!


11월의 공부 일기 - 일상 편

 

다음은 일상 편입니다.!!

저는 요즘 스터디 카페에서 강의를 들으면서 정리하고 있어요!

 

저처럼 집에서 공부 많이 못하시는 분 계신가요?

저는 집을 정말 정말 누구보다 좋아하고 집 밖을 정말 안 나가는 집순이여서 집에서 공부하고 싶었답니다.

그래서 꾸역꾸역 9월 10월 11월 중순까지만 해도 집에서 강의를 들었답니다...ㅎㅎ

 

하지만, 남자친구가 같이 공부하자고 스터디 카페를 가자고 해서 갔다 왔더니

집에서 2일 할 분량을 스터디 카페에서는 4시간 만에 끝냈지 뭐예요 ㅎㅎ;;; 

그래서 그 이후로 스터디 카페 시간제로 끊어서 11월 마지막 주부터는 혼자가서 공부하곤 합니다 ㅎㅎ! 

저처럼 집에서 공부 많이 못하시는 분에게 정말 정말 추천합니다!!!

 

공부 이외에 저의 일상으로는 나우 유 씨 미 3도 봤어요!

사실 1,2를 이걸 보려고 바로 직전 날에 정주행 했었는데 1,2가 너무너무 재밌었던 나머지 기대를 너무해서 그런지 3이 조금은? 적당히? 그냥 그저 그랬다? 정도였어요 ㅎㅎㅎ

 

그리고 친구들 동아리 활동으로 공연도 있어서 공연도 보고 집에서 쿠키도 굽고 즐겁게 보냈던 것 같아요!


11월의 공부 일기 - 마지막으로...

오늘 이 서포터즈 활동을 하면서 11월을 정말 돌아보고 반성할 점도 많이 있다는 것을 느끼기도 했어요,,, 하하...

12월은 조금 더 나은 제가 되도록 노력해 볼게요...!!

 

제가 12월에 이루고 싶은 목표들 

- 스터디 카페 꾸준히 나가기!

- 강의 듣기에 시간 더 많이 투자하기

- 여전히 꾸준하게 백준 풀기

 

이것만 지켜도 ㅎㅎ...

12월은 크리스마스가 있는 날이에요!! 그리고 모비우스 부트캠프 강의도 벌써 3개월을 달려 나가는 달이랍니다!!

다들 12월에는 좀 더 멋진 하루를 보내시길!!

 

서포터즈 글은 조금 찾아봐주시는 분들이 계셔서 제가 쓰는 노션 정리 같은 것이 도움이 되었으면 좋겠습니다!! 히히

다음 서포터즈 활동에서 뵙겠습니다!! 긴 글 읽어주셔서 감사힙니당~~!!٩(៸៸ᵔꇴᵔ៸៸)و

+ Recent posts