어셈블리에서 변수가 어떻게 구현되는지 혼란 스럽습니다.어셈블리 변수는 어떻게 구현됩니까?
.section .data
var:
.long 23
는 그 다음과 같은 변수에 액세스 할 수 있습니다 : 나는 다음과 같은 선언이 프로그램의 data
섹션에서 명명 된 메모리 위치를 생성 것을 알고있다에 내가 명확하지 않다 무엇
movl var, %eax //read from var location
방법 위의 지침이 실제로 구현됩니다. 메모리 참조, 절대 메모리 참조조차도 레지스터에로드해야만 사용할 수 있다는 인상을 받았습니다.
leal var, %ebx
movl (%ebx), %eax
또는 어셈블러 var
의 주소를 추적하고 절대 즉시 액세스 할 수있는 것처럼 그 위치에 액세스 않습니다
어셈블러는 다음과 같은 여러 지침으로 위의 명령을 변환해야합니까 , 예를 들면 : - 거의 모든 지시는 직접 또는 간접 메모리 참조를 사용할 수 있습니다
movl ($addr_of_var), %eax
아니요. 요구 사항에 대한 오해가 있습니다. 주소를 레지스터에로드 할 필요가 없습니다. 'MOV' 명령어 군에 대한 명령어 참조를보십시오. –