나는 바이트 코드를 읽을 수있는 루아 코드를 string.dump() 함수로 작성하고있다. 나는 모든 OP_JMP 명령어가 if 구문을 위해 사용될 때 명령어 포인터를 앞으로 증가시키는 것으로 가정한다. (약간의 최적화와 적은 코딩이 가능하기 때문이다.) 기술적으로 sBx 값 (음수 일 수 있음)을 사용하기 때문에 뒤로 이동할 수 있습니다. 표준 루아 5.1 구현의 if 문에 대한 바이트 코드에만 관심이 있습니다.'if'문장이 뒤로 건너 뛰는 루아 바이트 코드를 사용할 수 있습니까?
나는 약간의 샘플에 대한 바이트 코드를보기 위해 chunkspy (awesome tool btw)을 사용했다.
a, b = 1, 2
if a == b then
print '='
elseif a < b then
print '<'
else
print '>'
end
그것은 부정적인 어느 것도 네 점프, 생산 :
[08] jmp 4; to [13]
[12] jmp 11; to [24]
[16] jmp 4; to [21]
[20] jmp 3; to [24]
나는 Lua source code에서 답을 찾는 노력을하지만, 그냥 결국 문이 경우 다음
는 기본이다 혼란 스럽네요. (내가 그걸 잡기 위해 시간을 보낸다면 나는 훌륭한 우아한 코드라고 확신한다.)루아의 OP_JMP 명령어가 sBx에 대해 음수 값을 갖고 있거나 항상 양수 값인지 알고있는 'if'구문에 대한 사례를 아는 사람이 있습니까?
'luac -p -l' 또한 바이트 코드 목록을 제공합니다. – lhf