[Assembly] 명령어 LEA를 알아보자

@isaackim·2025년 4월 15일

Assembly

목록 보기
1/1
post-thumbnail

LEA = Load Effective Address

-> 계산된 메모리 주소를 레지스터에 넣는 명령어, 단순 산술연산에도 사용된다.

lea vs mov

둘 다 레지스터에 어떠한 값을 넣는 명령어지만, 확실한 차이가 있다.

mov: 단순히 값 그자체를 레지스터에 넣는 명령
mov eax, 1

-> eax 레지스터에 1을 넣는다

mov eax, [ebx]
-> ebx 주소가 가르키는 값을 eax에 가져와

[] : 메모리 접근을 의미한다.

mov eax, ebx
-> ebx 안의 숫자를 eax에 복사한다

lea: 값의 주소 계산 결과를 레지스터에 넣는 명령어

lea eax, [ebx] ; 뒤에 오는 건 꼭 []로 감싸야 해

-> ebx 안의 숫자를 eax에 복사한다
[]: 메모리 접근 X, ebx 값(보통 주소값) 자체를 넣는 것.

lea가 산술연산에 사용될 때

lea     esi, [eax+eax*2] ; eax*3

-> esi에 eax*3을 한 값을 저장함

??? 여기서 당황,, 아니 방금 주소를 넣는다더니 어떻게 연산에 사용되는 건가요..

💡어셈블리는 값과 주소의 구분을 하지 않는다 (둘 다 연산일 뿐)

그래서~ 접근을 하지 않으면 lea를 단순 연산에서도 사용할 수 있는 것,,
게다가 imul보다 속도도 빨라서 이렇게 많이 사용한다고 한다.

LEA = Load Effective Address

-> 계산된 메모리 주소를 레지스터에 넣는 명령어, 단순 산술연산에도 사용된다.

lea vs mov

둘 다 레지스터에 어떠한 값을 넣는 명령어지만, 확실한 차이가 있다.

mov: 단순히 값 그자체를 레지스터에 넣는 명령
mov eax, 1

-> eax 레지스터에 1을 넣는다

mov eax, [ebx]
-> ebx 주소가 가르키는 값을 eax에 가져와

[] : 메모리 접근을 의미한다.

mov eax, ebx
-> ebx 안의 숫자를 eax에 복사한다

lea: 값의 주소 계산 결과를 레지스터에 넣는 명령어

lea eax, [ebx] 무조건 뒤에 오는 건 []로 감싸야 해

-> ebx의 주소값 0x0134432이 eax에 들어온다.
[]: 메모리 접근 X, ebx 값(보통 주소값) 자체를 넣는 것.

lea가 산술연산에 사용될 때

lea     esi, [eax+eax*2] ; eax*3

-> esi에 eax*3을 한 값을 저장함

??? 여기서 당황,, 아니 방금 주소를 넣는다더니 어떻게 연산에 사용되는 건가요..

💡어셈블리는 값과 주소의 구분을 하지 않는다 (둘 다 연산일 뿐)

그래서~ 접근을 하지 않으면 lea를 단순 연산에서도 사용할 수 있는 것,,
게다가 imul보다 속도도 빨라서 이렇게 많이 사용한다고 한다.

profile
소프트웨어 23학번의 우당탕탕 공부기록

0개의 댓글