목록전체 글 (12)
seven05
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bQ33PW/btsJrDTT5l8/VTlFkpSFIw1KMngCfeUw4K/img.png)
프로시저: 함수를 어셈블리어에서 나타내는 말로 이해했다.스택은 단지 메모리의 한 부분일 뿐이지만 이 부분을 스택 자료구조처럼 다뤄서 스택이라고 부른다. 스택은 프로시저와 관련된 상태를 나타내기 위해 쓰이는데 왜그럴까? 생각해보면 함수가 호출되는 과정은 한국어로는 후입선출 영어로는 LIFO(Last-In-First-Out) 이기때문에 스택의 형태가 함수호출에 적합하다.왼쪽 그림에 보이는것처럼 스택은 높은 메모리 주소부터 아래로 증가한다. %rsp 레지스터는 스택의 가장 낮은 주소를 항상 저장하고있으며 스택에 원소가 추가될수로 %rsp가 감소한다. 근데 이부분에서 궁금한것이 생겼다. 무슨 궁금증이냐면 스택이 왜 높은 주소부터 할당될까? 였다. 그래서 찾아보았더니 프로세스 주소공간에서 동적으로 할당되는 힙과 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/pQb8K/btsJqaMiOPr/HpQUmarsW1vVWcdZVurpb0/img.png)
어셈블리어 부분을 공부하다가 이해하기 힘들었거나 중요하다고 생각됐던 부분들을 정리해 보려고한다 레지스터: 이름이 왜 rax, rbx, ... 하다가 갑자기 r8,r9,r10 일까? -> 원래 8개 쓰다가 16개가 되서 그럼 왜 32개로 늘리지않을까? -> 늘려도 10%의 퍼포먼스 향상밖에 없는데 레지스터 이름 더 표기하려면 비트하나더씀%rsp 만 스택포인터 레지스터로 특별한 역할이 남아있다.movq 명려어는 단순히 값을 복사함 단, 두개의 값이 모두 메모리 주소이면 안됨 (movq의 q는 quadword의 약자로 과거에서 발전하는 과정에서 붙혀짐) 앞에서 봤었지만 레지스터를 괄호로 감싸면 레지스터의 값을 메모리 주소로 인식하라는 뜻 (포인터 역참조)어셈블리어 연산자 중에 헷갈렸던 부분: 산술연산과 논리연..
출처: 1/sqrt(x)를 빠르게 구하는 알고리즘 _ Fast InvSqrt() : 네이버 블로그 (naver.com) 1/sqrt(x)를 빠르게 구하는 알고리즘 _ Fast InvSqrt()참고 : https://www.youtube.com/watch?v=p8u_k2LIZyo&list=LL&index=4 ht...blog.naver.com컴퓨터가 숫자를 어떻게 비트로 표현하는지 배우는 부분에서 부동소수점 부분을 배우게 되는데 IEEE754 표준을 공부하다가 왜 지수부에 bias를 더하는지 이유를 알고싶어서 검색를 하다가 컴퓨터가 수를 저장하는 원리를 사용하여 극한으로 계산을 최적화한 사례로 소개되어있길래 알게되었다. 바로 1/sqrt(x)를 구하는 연산인데 이게 필요한 이유는 벡터를 단위벡터로 만들 때..