leal -4(%ebp), %eax
이렇게 사용된 인스트럭션 인데요. lea라는 인스트럭션과 low혹은 long등이 합쳐진 의미가 아닐까 하고 생각하다가 아무래도 정확하게 짚고 넘어가야 나중에 헤메지 않을것 같아서 이렇게 질문드립니다.
leal은 어떤일을 하는 명령어인가요?
movl -4(%ebp), %eax 이 문장은 C문법으로 표현했을 때 eax = *(ebp-4); 이고
movl -4(%ebp), %eax
eax = *(ebp-4);
leal -4(%ebp), %eax 이 문장은 eax = ebp-4; 인것 같습니다.
eax = ebp-4;
즉 mov는 해당 주소에 저장돼있는 값을 옮겨주고 lea는 그냥 절대주소값을 계산해서 넘겨주는 일을 합니다.
lea로 주소를 넘겼다면 그 메모리를 참조하기 위해서는incl (%eax) 이렇게 해 줘야 하는군요. 실제 코드도 저렇게 생성되었구요.
incl (%eax)
load effective address의 줄임말 이라고 알고 있습니다.
이미 알고 계신거였다면 사족이 되겠네용;;
sjpark
https://nicesj.comhttps://blog.nicesj.com
effective address 였군요.. 감사합니다 ^^
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
자답입니다.
movl -4(%ebp), %eax
이 문장은 C문법으로 표현했을 때eax = *(ebp-4);
이고leal -4(%ebp), %eax
이 문장은eax = ebp-4;
인것 같습니다.즉 mov는 해당 주소에 저장돼있는 값을 옮겨주고
lea는 그냥 절대주소값을 계산해서 넘겨주는 일을 합니다.
lea로 주소를 넘겼다면 그 메모리를 참조하기 위해서는
incl (%eax)
이렇게 해 줘야 하는군요. 실제 코드도 저렇게 생성되었구요.
lea는
load effective address의 줄임말 이라고 알고 있습니다.
이미 알고 계신거였다면 사족이 되겠네용;;
sjpark
https://nicesj.com
https://blog.nicesj.com
아하;
effective address 였군요.. 감사합니다 ^^
댓글 달기