공부하는데 용어가 아직 명확하게 안들어와요
레지스터, 세그먼트, 세그먼트 레지스터 등등 ㅠㅠ
레지스터는 CPU 내부 연산 게이트에 들어갈수 있는 작은 기억장소.
세그먼트는 메모리 주소를 가리키기 위해 많은 비트를 사용해야 하니까 어드레스 버스를 많이 만들어줘야 하는데 그게 가격적으로 부담이 있던 시절에 작은 단위 레지스터를 2개 써서 메모리를 가리키기 위해 만들어진 메모리 분할 개념이고
세그먼트 레지스터는 큰단위의 주소를 나타내기 위한 레지스터.
80x86 CPU 기준 세그먼트 레지스터의 값 1 은 실제 물리적 주소 16 을 의미한다. 그걸 paragraph 라고 부르지.
그러면 프로시저는요?
proc 디렉티브는 포시저의 시작을 알린다고 하고, call은 현재 값을 화면에 표시하는 포로시저를 호출한다는데
procedure 는 프로그램의 실행단위를 이야기 하는건데, 어셈블리에서 PROC 이라는건 그냥 이름 붙여진 실행 단위임.
call 로 proc 의 이름을 불러주면 실제 그 코드의 주소를 call 에 넣어주는 셈이지.
다만 call 이 jmp ( jump ) 랑 다른건, 리턴을 기대한다는거야.
그래서 call 로 호출되는 경우는 그 proc 내부에든 아래에든 ret 가 있어야 하는거지 그러면 call 한 다음으로 PC ( program counter ) 가 되돌아옴
팬티 좀 갈아입고 올게요 저도 코세형님 코딱지만큼만 따라가고 싶네요
pascal 언어에선 proc 은 return 값이 없는 함수, function 은 리턴값이 있는 함수 지만, 어셈블리에선 그냥 함수라고 생각하면 돼.
레지스터는 CPU 내부 연산 게이트에 들어갈수 있는 작은 기억장소.
세그먼트는 메모리 주소를 가리키기 위해 많은 비트를 사용해야 하니까 어드레스 버스를 많이 만들어줘야 하는데 그게 가격적으로 부담이 있던 시절에 작은 단위 레지스터를 2개 써서 메모리를 가리키기 위해 만들어진 메모리 분할 개념이고
세그먼트 레지스터는 큰단위의 주소를 나타내기 위한 레지스터.
80x86 CPU 기준 세그먼트 레지스터의 값 1 은 실제 물리적 주소 16 을 의미한다. 그걸 paragraph 라고 부르지.
그러면 프로시저는요?
proc 디렉티브는 포시저의 시작을 알린다고 하고, call은 현재 값을 화면에 표시하는 포로시저를 호출한다는데
procedure 는 프로그램의 실행단위를 이야기 하는건데, 어셈블리에서 PROC 이라는건 그냥 이름 붙여진 실행 단위임.
call 로 proc 의 이름을 불러주면 실제 그 코드의 주소를 call 에 넣어주는 셈이지.
다만 call 이 jmp ( jump ) 랑 다른건, 리턴을 기대한다는거야.
그래서 call 로 호출되는 경우는 그 proc 내부에든 아래에든 ret 가 있어야 하는거지 그러면 call 한 다음으로 PC ( program counter ) 가 되돌아옴
팬티 좀 갈아입고 올게요 저도 코세형님 코딱지만큼만 따라가고 싶네요
pascal 언어에선 proc 은 return 값이 없는 함수, function 은 리턴값이 있는 함수 지만, 어셈블리에선 그냥 함수라고 생각하면 돼.