diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2017-09-26 15:14:45 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2017-09-26 15:14:45 -0300 |
commit | 00e728af885d2781e365071557530a6685110d7e (patch) | |
tree | 3e864db8a1ffa0dcb8b60a8b5c18418709ca6fc2 /lopcodes.h | |
parent | 13256a4173af4004518d65211b4bf1aebcd5fc25 (diff) | |
download | lua-00e728af885d2781e365071557530a6685110d7e.tar.gz lua-00e728af885d2781e365071557530a6685110d7e.tar.bz2 lua-00e728af885d2781e365071557530a6685110d7e.zip |
binary operators use R instead of RK
faster + nobody uses RK(B), so B can be smaller (freeing one bit
for more opcodes, soon)
Diffstat (limited to 'lopcodes.h')
-rw-r--r-- | lopcodes.h | 32 |
1 files changed, 16 insertions, 16 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lopcodes.h,v 1.159 2017/09/18 16:07:54 roberto Exp roberto $ | 2 | ** $Id: lopcodes.h,v 1.160 2017/09/19 18:38:14 roberto Exp roberto $ |
3 | ** Opcodes for Lua virtual machine | 3 | ** Opcodes for Lua virtual machine |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -198,18 +198,18 @@ OP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */ | |||
198 | OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C):string] */ | 198 | OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C):string] */ |
199 | 199 | ||
200 | OP_ADDI,/* A B C R(A) := R(B) + C */ | 200 | OP_ADDI,/* A B C R(A) := R(B) + C */ |
201 | OP_ADD,/* A B C R(A) := RK(B) + RK(C) */ | 201 | OP_ADD,/* A B C R(A) := R(B) + R(C) */ |
202 | OP_SUB,/* A B C R(A) := RK(B) - RK(C) */ | 202 | OP_SUB,/* A B C R(A) := R(B) - R(C) */ |
203 | OP_MUL,/* A B C R(A) := RK(B) * RK(C) */ | 203 | OP_MUL,/* A B C R(A) := R(B) * R(C) */ |
204 | OP_MOD,/* A B C R(A) := RK(B) % RK(C) */ | 204 | OP_MOD,/* A B C R(A) := R(B) % R(C) */ |
205 | OP_POW,/* A B C R(A) := RK(B) ^ RK(C) */ | 205 | OP_POW,/* A B C R(A) := R(B) ^ R(C) */ |
206 | OP_DIV,/* A B C R(A) := RK(B) / RK(C) */ | 206 | OP_DIV,/* A B C R(A) := R(B) / R(C) */ |
207 | OP_IDIV,/* A B C R(A) := RK(B) // RK(C) */ | 207 | OP_IDIV,/* A B C R(A) := R(B) // R(C) */ |
208 | OP_BAND,/* A B C R(A) := RK(B) & RK(C) */ | 208 | OP_BAND,/* A B C R(A) := R(B) & R(C) */ |
209 | OP_BOR,/* A B C R(A) := RK(B) | RK(C) */ | 209 | OP_BOR,/* A B C R(A) := R(B) | R(C) */ |
210 | OP_BXOR,/* A B C R(A) := RK(B) ~ RK(C) */ | 210 | OP_BXOR,/* A B C R(A) := R(B) ~ R(C) */ |
211 | OP_SHL,/* A B C R(A) := RK(B) << RK(C) */ | 211 | OP_SHL,/* A B C R(A) := R(B) << R(C) */ |
212 | OP_SHR,/* A B C R(A) := RK(B) >> RK(C) */ | 212 | OP_SHR,/* A B C R(A) := R(B) >> R(C) */ |
213 | OP_UNM,/* A B R(A) := -R(B) */ | 213 | OP_UNM,/* A B R(A) := -R(B) */ |
214 | OP_BNOT,/* A B R(A) := ~R(B) */ | 214 | OP_BNOT,/* A B R(A) := ~R(B) */ |
215 | OP_NOT,/* A B R(A) := not R(B) */ | 215 | OP_NOT,/* A B R(A) := not R(B) */ |
@@ -219,9 +219,9 @@ OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */ | |||
219 | 219 | ||
220 | OP_CLOSE,/* A close all upvalues >= R(A) */ | 220 | OP_CLOSE,/* A close all upvalues >= R(A) */ |
221 | OP_JMP,/* sBx pc+=sBx */ | 221 | OP_JMP,/* sBx pc+=sBx */ |
222 | OP_EQ,/* A B C if ((RK(B) == RK(C)) ~= A) then pc++ */ | 222 | OP_EQ,/* A B C if ((R(B) == R(C)) ~= A) then pc++ */ |
223 | OP_LT,/* A B C if ((RK(B) < RK(C)) ~= A) then pc++ */ | 223 | OP_LT,/* A B C if ((R(B) < R(C)) ~= A) then pc++ */ |
224 | OP_LE,/* A B C if ((RK(B) <= RK(C)) ~= A) then pc++ */ | 224 | OP_LE,/* A B C if ((R(B) <= R(C)) ~= A) then pc++ */ |
225 | 225 | ||
226 | OP_TEST,/* A C if not (R(A) <=> C) then pc++ */ | 226 | OP_TEST,/* A C if not (R(A) <=> C) then pc++ */ |
227 | OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */ | 227 | OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */ |