zxh0/luago-book

Page96中 LOADNIL 指令三个操作数的作用

balusch opened this issue · 1 comments

书上这样讲 LOADNIL指令的三个操作数的作用:

寄存器的起始索引由操作数 A 指定,寄存器数量则由操作数 B 指定,操作数 C 并没有用。

但是在书上举的例子中:

$ luac -l -
local a,b,c,d,e
^D
main <stdin:0,0> (2 instructions at 0x7fca03500070)
0+ params, 5 slots, 1 upvalue, 5 locals, 0 constants, 0 functions
	1	[1]	LOADNIL  	0 4
	2	[1]	RETURN   	0 1

里面 B 操作数的值为4,但是其实是给5个值(a,b,c,d,e)赋值nil
所以我觉得"寄存器的数量由操作数 B 指定"这句话稍微有点歧义。

zxh0 commented

抱歉了,表述上的确是有点不太精确,B操作数里放的实际是“寄存器数量减去一”。❤️