본문 바로가기

전체 글114

TIL(11일차) 어셈블리어에서의 포인터, 다중배열 어셈블리어에서 단항 연산자 '&'와 '*'는 포인터의 생성과 역참조를 수행한다. 어떤 객체를 나타내는 식 Expr이 있다면 &Expr은 객체의 주소를 주는 포인터가된다. 주소를 나타내는 식 AExpr에 대해 *AExpr는 그 주소의 위치한 값을 준다. 따라서 Expr와 *&Expr는 동일하다. 인덱스 i가 레지스터 %rdx와 %rcx에 각각 저장되어 있는 경우 대해 생각해보면 E와 관련된 수식들은 아래에 표와 같이 표현 할 수있다. 결과 값 레지스터는 %eax(데이터) 또는 %rax(포인터)에 저장하는 수식의 어셈블리 코드이다. 다중배열 C언어에서 다중 배열은 일반적으로 다음과 같이 선언한다. int A[5][3]; typedef int row3_t[3]; row3_t A[5]; 배열 A는 다섯 개의 행.. 2023. 5. 2.
STO 튜토리얼 프로젝트 프로젝트 STO 튜토리얼 프로젝트 프로젝트 명 : STO 튜토리얼 팀원 : 윤수빈(팀장), 김현태, 박도형, 백준석 youtube Link = https://www.youtube.com/watch?v=0fmODCTVs0g github : https://github.com/pdhyeong/Project-ENTASIS GitHub - pdhyeong/Project-ENTASIS Contribute to pdhyeong/Project-ENTASIS development by creating an account on GitHub. github.com 전부터 블로그 글로 작성하고 싶었지만 너무 바빠서 이제야 겨우 적는 프로젝트 ㅎ..... 관심 가지던 STO에 대해 지식을 알아가면서 프로젝트를 좀 더 디테일 하게.. 2023. 5. 2.
TIL(10일차) 어셈블리어 간단한 계산 명령어와 연습문제 어셈블리어 간단한 계산 명령어와 연습문제 leaq 연습문제 rbx가 p 이고, rdx 가 q를 저장하고 있다고 가정하에 답을 적는 문제 였는데 leaq가 x(rbx) 면 x+rax가 되므로 연산하는 것을 차근차근 따라가다보면 풀만 했던 문제이다. 단항 연산자 주소의 개념에 대해 조금더 깊숙히 알 수있게 되는 파트인 것 같다. (rax)는 *rax로 보면 되므로 rax value가 가르키는 value 값을 찾으면 된다. 유의 할 점은 저 ()부분이고 나머지는 쉽게 풀 수 있었다. 스택 프레임의 대략적인 플로우 rbp로 값을 할당 해놓고 rsp로 이동을 한다 여기서 중요한건 스택메모리 구조는 주소의 값이 높은 곳에서 낮은 곳으로 쌓이는 것이다. 즉, 주소와 스택의 쌓이는 데이터 높이와는 반 비례 관계인 것이.. 2023. 5. 1.
TIL(9일차) 기계어 인스트럭션 보기 우리가 하는 말을 컴퓨터는 어떻게 알아 들을까? 라는 생각을 한 번쯤은 해본적이 있을 것이다. 우리는 쉽게 프로그래밍 언어를 사용해서 컴퓨터가 그걸 받아들이는 과정을 코딩이라고 생각할 수 있지만 그건 아닌 것을 우린 알고 있을 것이다. 실제로는 0,1 밖에 못알아 듣기 때문이다. 모든 사람이 그렇게 깊게 알필요 없으니까 그냥 알고만 넘어가자고 하지만 나 스스로 프로그래밍 한다고 하면 컴퓨터가 어떻게 내말을 알아 듣는지 까지는 알아야 한다고 생각이 들었다. 책을 보고 공부를 해보자 기계 수준의 표현의 부분을 보니 난해한 말들이 굉장히 많다. 처음 보면 굉장히 까다롭지만 천천히 따라가면 대강 이해는 간다. 다른 정글의 팀원들이 어셈블리어부터 기계어 인스트럭션 부분을 굉장히 어려워 하는 것같아서 따로 필요한 .. 2023. 4. 30.