C언어 2

[system programming] Program의 표현과 실행 2편 (Basic of Assembly Code)

본 게시글은서울대학교 데이터사이언스대학원 정형수 교수님의 데이터사이언스 응용을 위한 시스템 프로그래밍 강의를학습을 목적으로 재구성하였습니다 저번 시간에는 data movement의assembly의 general form을 배웠었다잠깐만 되짚어보자면 S는 스케일이라 주소값에 곱하는 값이고D는 Displacement라 주소값에 더하는 값이다 지난시간에 배웠던 leaq 연산자leaq는 주소값에 접근하는 것이 아닌단순히 주소값끼리만 연산하는 연산자였다그래서 더하기, 곱셈과도 같은 일반 연산에도많이 사용된다 주소값 연산의 예시이다위에서 봤던 leaq의 규칙과 동일하다괄호 앞에 오는 값은 D라 더하기괄호 안에 오는 값은 S라 %rcx에 곱하기를 해준다 이제 다른 Arithmetic Operation을 알아보자..

[ComputerScience] C언어와 포인터

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.pointer는 C언어의 꽃이라고도 불린다어렵고 복잡하지만 그만큼 중요하고 반드시 필요한 부분이기때문에C언어 혹은 컴퓨터과학을 공부한다면반드시 완벽하게 이해하고 넘어가야한다 그래서 강의에서 들은 Pointer에 대해서정리해보도록 하겠당 Pointer란?포인터란 어떤 변수의 메모리 주소를 담고있는 변수이다말그대로 int, string같은 변수인데그 데이터 타입이 메모리 주소인 것이다  *;앞의 type이 메모리 주소에 담겨있는 변수의 데이터 타입은 포인터 변수의 이름이다 int *ptr;이렇게 정의를 한다면ptr은 어떤 int 값의 메모리 주소를 담고있는포인터 변수라는 뜻이다 char ..