IT

MOV와 LEA의 차이점은 무엇입니까?

lottoking 2020. 8. 3. 17:30
반응형

MOV와 LEA의 차이점은 무엇입니까?


이 내용의 차이점이 무엇인지 알고 싶습니다.

MOV AX, [TABLE-ADDR]

LEA AX, [TABLE-ADDR]

  • LEA 로드 유효 주소를 의미
  • MOV 로드 값을 의미

즉, LEA주소를 주소 항목에 대한 포인터를로드하는 반면 MOV는 해당 주소의 실제 값을로드합니다.

LEA사소한 주소 계산을 수행하고 결과를 [나중에 사용하기 위해] 저장하는 것이 목적입니다 .

LEA ax, [BP+SI+5] ; Compute address of value

MOV ax, [BP+SI+5] ; Load value at that address

관련된 상수가있는 경우 MOV(어셈블러의 상수 계산을 통해) 가장 간단한 사용 사례와 겹치는 보일 보일 수 있습니다 LEA. 여러 기본 주소 등으로 여러 부분으로 구성이있는 경우 유용합니다.


NASM 구문에서 :

mov eax, var       == lea eax, [var]   ; i.e. mov r32, imm32
lea eax, [var+16]  == mov eax, var+16
lea eax, [eax*4]   == shl eax, 2        ; but without setting flags

MASM 구문에서 OFFSET var로드 대신 mov-immediate를 사용하십시오 .


명령 MOV reg, addr은 주소 addr에 저장된 변수를 reg로 읽는 것을 의미합니다. LEA reg, addr 명령은 주소에 저장된 변수가 아닌 주소를 수신하는 reg로 읽는 것을 의미합니다.

MOV 급의 다른 형태는 MOV reg, immdata입니다. 즉, 즉시 데이터 (즉, 상수) immdata를 reg로 읽습니다. LEA reg의 addr, addr가 상수 (즉, 고정식) 인 경우 LEA 명령은 즉시 실행 인 데이터와 동일한 상수를로드하는 동일한 MOV reg, immdata 명령과 정확히 동일합니다.


리터럴 만 지정하면 차이가 없습니다. LEA는 더 많은 능력을 가지고 있으며 여기에서 읽을 수 있습니다.

http://www.oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/Chapter_6/CH06-1.html#HEADING1-136


사용 된 어셈블러에 따라.

mov ax,table_addr

MASM에서는

mov ax,word ptr[table_addr]

그러나 그것이 table_addr아닌 에서 첫 번째 바이트를로드합니다 table_addr. 대신합니다.

mov ax,offset table_addr

또는

lea ax,table_addr

같은 방식으로 작동합니다.

leatable_addr로컬 변수 인 경우 버전도 잘 작동합니다.

some_procedure proc

local table_addr[64]:word

lea ax,table_addr

기본적으로 ... "계산 후 REG로 이동 ... ..."다른 목적으로도 좋은 것입니다 :)

값이 포인터라는 것을 잊어 버리는 경우 코드 최적화 / 최소화에 사용할 수 있습니다.

MOV EBX , 1
MOV ECX , 2

;//with 1 instruction you got result of 2 registers in 3rd one ...
LEA EAX , [EBX+ECX+5]

EAX = 8

독창성 :

MOV EAX, EBX
ADD EAX, ECX
ADD EAX, 5

그 차이는 미묘하지만 중요합니다. MOV는 "MOVe"이며 TABLE-ADDR 레이블이 대량 주소의 복사본입니다. LEA 좀 더 급급 인 '로드 유효 주소'입니다. 즉, TABLE-ADDR은로드 할 주소가있는 메모리 위치를 가리 킵니다.

LEA를 효과적으로 사용하는 것은 강력한 명령어이므로 C와 같은 언어로 포인터를 사용하는 것과 같습니다.

참고 URL : https://stackoverflow.com/questions/1699748/what-is-the-difference-between-mov-and-lea

반응형