▶레지스터의 section
ㆍ데이터 섹션은 초기화 된 데이터
◆ 선언 방법
ㆍ [변수이름] [크기] [초기값]
ㆍ 크기 키워드의 종류 : db(1) dw(2) dd(4) dq(8) 디파인바이트, 디파인워드 ,디파인 디워드 디파인 q워드
ㆍ 순서대로 d바이트 d워드 d더블 d쿼터
ㆍ bss섹션은 초기화 되지 않은 데이터
◆ 선언 방법
ㆍ [변수이름] [크기] [개수]
ㆍ 크기 키워드 종류 - resb(1) resw(2) resd(4) resq(8)
ㆍ 위 사진은 윈도우 실행파일 구조이다
ㆍ 노출되는건 Data영역일뿐 Bss는 노출되지 않는다
ㆍ 하지만 어셈블리에선 두 영역을 분리하고있다. 차이점이 뭐길레?
ㆍ 실제 메모리의 구조에선 BSS가 눈에 보인다
▶결과창과 함께 보는 data와 bss 차이
ㆍ Data : 프로그램 실행 시 data영역의 변수들은 초기값이 메모리에 할당되는걸 확인할 수 있다 .
ㆍ Bss : bss영역은 초기화 되지 않은 변수를 자동으로 0으로 초기화 하고 실제 메모리에 저장되지 않는다.
▶ rax에 a의 주소와 a의 값 복사
ㆍ 지난 글에 mov를 알아봤는데 값을 가져오는 것이 아닌 주소값을 가져오는 것
ㆍ 이러한 방식도 가능하다..
▶ 결론
ㆍ정말 너무 헷갈리는데... 디버그를 돌려보면서 공부하면 이해가 되는 것 같다.
※ 디버그를 돌리는 방법
1. Debug를 실행시킨다 (중단점 다 됨)
2. 위 사진의 체크박스를 활성화 시킨다.
ㆍ Variable or expression 탭에서 만든 변수를 추가하고 Type탭에서 몇진수로, 무슨 단위로(bit,byte,word,dw...등등) 설정하면 여러가지를 눈으로 확인할 수 있다!
※ 접은 글은 개인적으로 이것저것 필기해보고 확인해보다 지우기전에 저장용도로 첨부함

