예를 들어서 이런 어셈 코드가 있는데요..
start: lgdt xxx ljmp $0x10, $label_1 label_1: movl .. .. ..
이런 경우에 그냥 jmp label_1하지 않고 ljmp를 쓰는 이유가 뭔지 알고 싶습니다.
일단 label_1이 바로 아래 라인이기 때문에, 목적이 label_1으로 점프하는 것은 아닐 듯합니다. 예전 16bit코드에서 롱점프는 CS레지스터 값도 변경했던 걸로 기억하는데, 아마 이 경우에도 CS레지스터 값 변경을 목적으로 ljmp를 쓴 걸로 보입니다.
답변 감사합니다. 제가 궁금했던 부분이 그 부분인데요. 지금 관계된 소스 안에는 label_1이라는 라벨이 아무데도 없어요..
제 생각에도 ljmp써서 CS값까지 변경 했으면.. label_1로 가는 건 아닌 것 같은데 말이죠
그래서 혹시 다른 기능이 있는가 하고 질문 했습니다. ㅋ
텍스트 포맷에 대한 자세한 정보
<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]
일단 label_1이 바로 아래 라인이기 때문에,
일단 label_1이 바로 아래 라인이기 때문에, 목적이 label_1으로 점프하는 것은 아닐 듯합니다.
예전 16bit코드에서 롱점프는 CS레지스터 값도 변경했던 걸로 기억하는데, 아마 이 경우에도 CS레지스터 값 변경을 목적으로 ljmp를 쓴 걸로 보입니다.
감사합니다.
답변 감사합니다. 제가 궁금했던 부분이 그 부분인데요.
지금 관계된 소스 안에는 label_1이라는 라벨이 아무데도 없어요..
제 생각에도 ljmp써서 CS값까지 변경 했으면.. label_1로 가는 건 아닌 것 같은데 말이죠
그래서 혹시 다른 기능이 있는가 하고 질문 했습니다. ㅋ
댓글 달기