VM 언어를 Intel x86 어셈블리 언어 (MASM)로 번역하는 변환기를 작성하려고합니다. 불행히도 lt (보다 작음), gt (보다 큼) 또는 eq (같음)에 대한 적절한 변환을 찾을 수는 없지만 명령어 세트에 이와 비슷한 것이있을 것으로 기대합니다. 내가 찾을 수있는 가장 가까운 것은 cmp (비교)와이어서 조건 점프였습니다. 그러나 점프 없이는 아무것도.Intel x86 어셈블리 - lt, gt, eq
예를 들어(X> 1, X < 3)한다면 내가 번역 할 ... VM의 코드는
push local 0
push constant 1
gt
push local 0
push constant 3
lt
and
if-goto IF_TRUE0
내 문제처럼 뭔가 내가 모르는 지금의 모습에 gt와 lt를 번역하면 점프가 바로 뒤 따르지 않고 오히려 단일 점프 조건의 일부가됩니다.
컴퓨터는 일반적으로 작동 방법은 다음과 같습니다
당신이 "setgt"명령을 사용할 수 있습니다 32 비트 코드를 사용. –
조건부 점프 *는 인텔 CPU의 어셈블리 수준에서 if/else 문과 루프를 구현하는 데 사용됩니다. 너 정확히 뭐야? –
또 다른 옵션은'.if'와 같은 내장 매크로를 사용하는 것입니다. 자세한 내용은 http://stackoverflow.com/a/15351291/56778을 참조하십시오. –