ljmp와 jmp의 차이가 이해가 안됩니다.

gogisimji의 이미지


예를 들어서 이런 어셈 코드가 있는데요..

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로 가는 건 아닌 것 같은데 말이죠

그래서 혹시 다른 기능이 있는가 하고 질문 했습니다. ㅋ