renamed abc_ops.c into opcodes.{c,h}
[swftools.git] / lib / as3 / opcodes.c
1 #include "opcodes.h"
2 abc_code_t* abc_add(abc_code_t*prev)
3 {
4     abc_code_t*self = add_opcode(prev, 0xa0);
5     return self;
6 }
7 abc_code_t* abc_add_i(abc_code_t*prev)
8 {
9     abc_code_t*self = add_opcode(prev, 0xc5);
10     return self;
11 }
12 abc_code_t* abc_astype(abc_code_t*prev, char* name)
13 {
14     abc_code_t*self = add_opcode(prev, 0x86);
15     self->params[0] = name;
16     return self;
17 }
18 abc_code_t* abc_astypelate(abc_code_t*prev)
19 {
20     abc_code_t*self = add_opcode(prev, 0x87);
21     return self;
22 }
23 abc_code_t* abc_bitand(abc_code_t*prev)
24 {
25     abc_code_t*self = add_opcode(prev, 0xA8);
26     return self;
27 }
28 abc_code_t* abc_bitnot(abc_code_t*prev)
29 {
30     abc_code_t*self = add_opcode(prev, 0x97);
31     return self;
32 }
33 abc_code_t* abc_bitor(abc_code_t*prev)
34 {
35     abc_code_t*self = add_opcode(prev, 0xa9);
36     return self;
37 }
38 abc_code_t* abc_bitxor(abc_code_t*prev)
39 {
40     abc_code_t*self = add_opcode(prev, 0xaa);
41     return self;
42 }
43 abc_code_t* abc_call(abc_code_t*prev, int v)
44 {
45     abc_code_t*self = add_opcode(prev, 0x41);
46     self->params[0] = (void*)(ptroff_t)v;
47     return self;
48 }
49 abc_code_t* abc_callmethod(abc_code_t*prev, abc_method_body_t* m, int v)
50 {
51     abc_code_t*self = add_opcode(prev, 0x43);
52     self->params[0] = m;
53     self->params[1] = (void*)(ptroff_t)v;
54     return self;
55 }
56 abc_code_t* abc_callproplex(abc_code_t*prev, char* name, int v)
57 {
58     abc_code_t*self = add_opcode(prev, 0x4c);
59     self->params[0] = name;
60     self->params[1] = (void*)(ptroff_t)v;
61     return self;
62 }
63 abc_code_t* abc_callproperty(abc_code_t*prev, char* name, int v)
64 {
65     abc_code_t*self = add_opcode(prev, 0x46);
66     self->params[0] = name;
67     self->params[1] = (void*)(ptroff_t)v;
68     return self;
69 }
70 abc_code_t* abc_callpropvoid(abc_code_t*prev, char* name, int v)
71 {
72     abc_code_t*self = add_opcode(prev, 0x4f);
73     self->params[0] = name;
74     self->params[1] = (void*)(ptroff_t)v;
75     return self;
76 }
77 abc_code_t* abc_callstatic(abc_code_t*prev, abc_method_t* m, int v)
78 {
79     abc_code_t*self = add_opcode(prev, 0x44);
80     self->params[0] = m;
81     self->params[1] = (void*)(ptroff_t)v;
82     return self;
83 }
84 abc_code_t* abc_callsuper(abc_code_t*prev, char* name, int v)
85 {
86     abc_code_t*self = add_opcode(prev, 0x45);
87     self->params[0] = name;
88     self->params[1] = (void*)(ptroff_t)v;
89     return self;
90 }
91 abc_code_t* abc_callsupervoid(abc_code_t*prev, char* name, int v)
92 {
93     abc_code_t*self = add_opcode(prev, 0x4e);
94     self->params[0] = name;
95     self->params[1] = (void*)(ptroff_t)v;
96     return self;
97 }
98 abc_code_t* abc_checkfilter(abc_code_t*prev)
99 {
100     abc_code_t*self = add_opcode(prev, 0x78);
101     return self;
102 }
103 abc_code_t* abc_coerce(abc_code_t*prev, char* name)
104 {
105     abc_code_t*self = add_opcode(prev, 0x80);
106     self->params[0] = name;
107     return self;
108 }
109 abc_code_t* abc_coerce_a(abc_code_t*prev)
110 {
111     abc_code_t*self = add_opcode(prev, 0x82);
112     return self;
113 }
114 abc_code_t* abc_coerce_s(abc_code_t*prev)
115 {
116     abc_code_t*self = add_opcode(prev, 0x85);
117     return self;
118 }
119 abc_code_t* abc_construct(abc_code_t*prev, int v)
120 {
121     abc_code_t*self = add_opcode(prev, 0x42);
122     self->params[0] = (void*)(ptroff_t)v;
123     return self;
124 }
125 abc_code_t* abc_constructprop(abc_code_t*prev, char* name, int v)
126 {
127     abc_code_t*self = add_opcode(prev, 0x4a);
128     self->params[0] = name;
129     self->params[1] = (void*)(ptroff_t)v;
130     return self;
131 }
132 abc_code_t* abc_constructsuper(abc_code_t*prev, int v)
133 {
134     abc_code_t*self = add_opcode(prev, 0x49);
135     self->params[0] = (void*)(ptroff_t)v;
136     return self;
137 }
138 abc_code_t* abc_convert_b(abc_code_t*prev)
139 {
140     abc_code_t*self = add_opcode(prev, 0x76);
141     return self;
142 }
143 abc_code_t* abc_convert_i(abc_code_t*prev)
144 {
145     abc_code_t*self = add_opcode(prev, 0x73);
146     return self;
147 }
148 abc_code_t* abc_convert_d(abc_code_t*prev)
149 {
150     abc_code_t*self = add_opcode(prev, 0x75);
151     return self;
152 }
153 abc_code_t* abc_convert_o(abc_code_t*prev)
154 {
155     abc_code_t*self = add_opcode(prev, 0x77);
156     return self;
157 }
158 abc_code_t* abc_convert_u(abc_code_t*prev)
159 {
160     abc_code_t*self = add_opcode(prev, 0x74);
161     return self;
162 }
163 abc_code_t* abc_convert_s(abc_code_t*prev)
164 {
165     abc_code_t*self = add_opcode(prev, 0x70);
166     return self;
167 }
168 abc_code_t* abc_debug(abc_code_t*prev, void* debuginfo)
169 {
170     abc_code_t*self = add_opcode(prev, 0xef);
171     /* FIXME: write debuginfo debuginfo */
172     return self;
173 }
174 abc_code_t* abc_debugfile(abc_code_t*prev, char* s)
175 {
176     abc_code_t*self = add_opcode(prev, 0xf1);
177     self->params[0] = strdup(s);
178     return self;
179 }
180 abc_code_t* abc_debugline(abc_code_t*prev, int v)
181 {
182     abc_code_t*self = add_opcode(prev, 0xf0);
183     self->params[0] = (void*)(ptroff_t)v;
184     return self;
185 }
186 abc_code_t* abc_declocal(abc_code_t*prev, int reg)
187 {
188     abc_code_t*self = add_opcode(prev, 0x94);
189     self->params[0] = (void*)(ptroff_t)reg;
190     return self;
191 }
192 abc_code_t* abc_declocal_i(abc_code_t*prev, int reg)
193 {
194     abc_code_t*self = add_opcode(prev, 0xc3);
195     self->params[0] = (void*)(ptroff_t)reg;
196     return self;
197 }
198 abc_code_t* abc_decrement(abc_code_t*prev)
199 {
200     abc_code_t*self = add_opcode(prev, 0x93);
201     return self;
202 }
203 abc_code_t* abc_decrement_i(abc_code_t*prev)
204 {
205     abc_code_t*self = add_opcode(prev, 0xc1);
206     return self;
207 }
208 abc_code_t* abc_deleteproperty(abc_code_t*prev, char* name)
209 {
210     abc_code_t*self = add_opcode(prev, 0x6a);
211     self->params[0] = name;
212     return self;
213 }
214 abc_code_t* abc_divide(abc_code_t*prev)
215 {
216     abc_code_t*self = add_opcode(prev, 0xa3);
217     return self;
218 }
219 abc_code_t* abc_dup(abc_code_t*prev)
220 {
221     abc_code_t*self = add_opcode(prev, 0x2a);
222     return self;
223 }
224 abc_code_t* abc_dxns(abc_code_t*prev, char* s)
225 {
226     abc_code_t*self = add_opcode(prev, 0x06);
227     self->params[0] = strdup(s);
228     return self;
229 }
230 abc_code_t* abc_dxnslate(abc_code_t*prev)
231 {
232     abc_code_t*self = add_opcode(prev, 0x07);
233     return self;
234 }
235 abc_code_t* abc_equals(abc_code_t*prev)
236 {
237     abc_code_t*self = add_opcode(prev, 0xab);
238     return self;
239 }
240 abc_code_t* abc_esc_xattr(abc_code_t*prev)
241 {
242     abc_code_t*self = add_opcode(prev, 0x72);
243     return self;
244 }
245 abc_code_t* abc_esc_xelem(abc_code_t*prev)
246 {
247     abc_code_t*self = add_opcode(prev, 0x71);
248     return self;
249 }
250 abc_code_t* abc_findproperty(abc_code_t*prev, char* name)
251 {
252     abc_code_t*self = add_opcode(prev, 0x5e);
253     self->params[0] = name;
254     return self;
255 }
256 abc_code_t* abc_findpropstrict(abc_code_t*prev, char* name)
257 {
258     abc_code_t*self = add_opcode(prev, 0x5d);
259     self->params[0] = name;
260     return self;
261 }
262 abc_code_t* abc_getdescendants(abc_code_t*prev, char* name)
263 {
264     abc_code_t*self = add_opcode(prev, 0x59);
265     self->params[0] = name;
266     return self;
267 }
268 abc_code_t* abc_getglobalscope(abc_code_t*prev)
269 {
270     abc_code_t*self = add_opcode(prev, 0x64);
271     return self;
272 }
273 abc_code_t* abc_getglobalslot(abc_code_t*prev, int v)
274 {
275     abc_code_t*self = add_opcode(prev, 0x6e);
276     self->params[0] = (void*)(ptroff_t)v;
277     return self;
278 }
279 abc_code_t* abc_getlex(abc_code_t*prev, char* name)
280 {
281     abc_code_t*self = add_opcode(prev, 0x60);
282     self->params[0] = name;
283     return self;
284 }
285 abc_code_t* abc_getlocal(abc_code_t*prev, int reg)
286 {
287     abc_code_t*self = add_opcode(prev, 0x62);
288     self->params[0] = (void*)(ptroff_t)reg;
289     return self;
290 }
291 abc_code_t* abc_getlocal_0(abc_code_t*prev)
292 {
293     abc_code_t*self = add_opcode(prev, 0xd0);
294     return self;
295 }
296 abc_code_t* abc_getlocal_1(abc_code_t*prev)
297 {
298     abc_code_t*self = add_opcode(prev, 0xd1);
299     return self;
300 }
301 abc_code_t* abc_getlocal_2(abc_code_t*prev)
302 {
303     abc_code_t*self = add_opcode(prev, 0xd2);
304     return self;
305 }
306 abc_code_t* abc_getlocal_3(abc_code_t*prev)
307 {
308     abc_code_t*self = add_opcode(prev, 0xd3);
309     return self;
310 }
311 abc_code_t* abc_getproperty(abc_code_t*prev, char* name)
312 {
313     abc_code_t*self = add_opcode(prev, 0x66);
314     self->params[0] = name;
315     return self;
316 }
317 abc_code_t* abc_getscopeobject(abc_code_t*prev, int v)
318 {
319     abc_code_t*self = add_opcode(prev, 0x65);
320     self->params[0] = (void*)(ptroff_t)v;
321     return self;
322 }
323 abc_code_t* abc_getslot(abc_code_t*prev, int v)
324 {
325     abc_code_t*self = add_opcode(prev, 0x6c);
326     self->params[0] = (void*)(ptroff_t)v;
327     return self;
328 }
329 abc_code_t* abc_getsuper(abc_code_t*prev, char* name)
330 {
331     abc_code_t*self = add_opcode(prev, 0x04);
332     self->params[0] = name;
333     return self;
334 }
335 abc_code_t* abc_greaterequals(abc_code_t*prev)
336 {
337     abc_code_t*self = add_opcode(prev, 0xaf);
338     return self;
339 }
340 abc_code_t* abc_hasnext(abc_code_t*prev)
341 {
342     abc_code_t*self = add_opcode(prev, 0x1f);
343     return self;
344 }
345 abc_code_t* abc_hasnext2(abc_code_t*prev, int reg, int reg2)
346 {
347     abc_code_t*self = add_opcode(prev, 0x32);
348     self->params[0] = (void*)(ptroff_t)reg;
349     self->params[1] = (void*)(ptroff_t)reg2;
350     return self;
351 }
352 abc_code_t* abc_ifeq(abc_code_t*prev, abc_code_t* label)
353 {
354     abc_code_t*self = add_opcode(prev, 0x13);
355     self->params[0] = label;
356     return self;
357 }
358 abc_code_t* abc_iffalse(abc_code_t*prev, abc_code_t* label)
359 {
360     abc_code_t*self = add_opcode(prev, 0x12);
361     self->params[0] = label;
362     return self;
363 }
364 abc_code_t* abc_ifge(abc_code_t*prev, abc_code_t* label)
365 {
366     abc_code_t*self = add_opcode(prev, 0x18);
367     self->params[0] = label;
368     return self;
369 }
370 abc_code_t* abc_ifgt(abc_code_t*prev, abc_code_t* label)
371 {
372     abc_code_t*self = add_opcode(prev, 0x17);
373     self->params[0] = label;
374     return self;
375 }
376 abc_code_t* abc_ifle(abc_code_t*prev, abc_code_t* label)
377 {
378     abc_code_t*self = add_opcode(prev, 0x16);
379     self->params[0] = label;
380     return self;
381 }
382 abc_code_t* abc_iflt(abc_code_t*prev, abc_code_t* label)
383 {
384     abc_code_t*self = add_opcode(prev, 0x15);
385     self->params[0] = label;
386     return self;
387 }
388 abc_code_t* abc_ifnge(abc_code_t*prev, abc_code_t* label)
389 {
390     abc_code_t*self = add_opcode(prev, 0x0f);
391     self->params[0] = label;
392     return self;
393 }
394 abc_code_t* abc_ifngt(abc_code_t*prev, abc_code_t* label)
395 {
396     abc_code_t*self = add_opcode(prev, 0x0e);
397     self->params[0] = label;
398     return self;
399 }
400 abc_code_t* abc_ifnle(abc_code_t*prev, abc_code_t* label)
401 {
402     abc_code_t*self = add_opcode(prev, 0x0d);
403     self->params[0] = label;
404     return self;
405 }
406 abc_code_t* abc_ifnlt(abc_code_t*prev, abc_code_t* label)
407 {
408     abc_code_t*self = add_opcode(prev, 0x0c);
409     self->params[0] = label;
410     return self;
411 }
412 abc_code_t* abc_ifne(abc_code_t*prev, abc_code_t* label)
413 {
414     abc_code_t*self = add_opcode(prev, 0x14);
415     self->params[0] = label;
416     return self;
417 }
418 abc_code_t* abc_ifstricteq(abc_code_t*prev, abc_code_t* label)
419 {
420     abc_code_t*self = add_opcode(prev, 0x19);
421     self->params[0] = label;
422     return self;
423 }
424 abc_code_t* abc_ifstrictne(abc_code_t*prev, abc_code_t* label)
425 {
426     abc_code_t*self = add_opcode(prev, 0x1a);
427     self->params[0] = label;
428     return self;
429 }
430 abc_code_t* abc_iftrue(abc_code_t*prev, abc_code_t* label)
431 {
432     abc_code_t*self = add_opcode(prev, 0x11);
433     self->params[0] = label;
434     return self;
435 }
436 abc_code_t* abc_in(abc_code_t*prev)
437 {
438     abc_code_t*self = add_opcode(prev, 0xb4);
439     return self;
440 }
441 abc_code_t* abc_inclocal(abc_code_t*prev, int reg)
442 {
443     abc_code_t*self = add_opcode(prev, 0x92);
444     self->params[0] = (void*)(ptroff_t)reg;
445     return self;
446 }
447 abc_code_t* abc_inclocal_i(abc_code_t*prev, int reg)
448 {
449     abc_code_t*self = add_opcode(prev, 0xc2);
450     self->params[0] = (void*)(ptroff_t)reg;
451     return self;
452 }
453 abc_code_t* abc_increment(abc_code_t*prev)
454 {
455     abc_code_t*self = add_opcode(prev, 0x91);
456     return self;
457 }
458 abc_code_t* abc_increment_i(abc_code_t*prev)
459 {
460     abc_code_t*self = add_opcode(prev, 0xc0);
461     return self;
462 }
463 abc_code_t* abc_initproperty(abc_code_t*prev, char* name)
464 {
465     abc_code_t*self = add_opcode(prev, 0x68);
466     self->params[0] = name;
467     return self;
468 }
469 abc_code_t* abc_instanceof(abc_code_t*prev)
470 {
471     abc_code_t*self = add_opcode(prev, 0xb1);
472     return self;
473 }
474 abc_code_t* abc_istype(abc_code_t*prev, char* name)
475 {
476     abc_code_t*self = add_opcode(prev, 0xb2);
477     self->params[0] = name;
478     return self;
479 }
480 abc_code_t* abc_istypelate(abc_code_t*prev)
481 {
482     abc_code_t*self = add_opcode(prev, 0xb3);
483     return self;
484 }
485 abc_code_t* abc_jump(abc_code_t*prev, abc_code_t* label)
486 {
487     abc_code_t*self = add_opcode(prev, 0x10);
488     self->params[0] = label;
489     return self;
490 }
491 abc_code_t* abc_kill(abc_code_t*prev, int reg)
492 {
493     abc_code_t*self = add_opcode(prev, 0x08);
494     self->params[0] = (void*)(ptroff_t)reg;
495     return self;
496 }
497 abc_code_t* abc_label(abc_code_t*prev)
498 {
499     abc_code_t*self = add_opcode(prev, 0x09);
500     return self;
501 }
502 abc_code_t* abc_lessequals(abc_code_t*prev)
503 {
504     abc_code_t*self = add_opcode(prev, 0xae);
505     return self;
506 }
507 abc_code_t* abc_lessthan(abc_code_t*prev)
508 {
509     abc_code_t*self = add_opcode(prev, 0xad);
510     return self;
511 }
512 abc_code_t* abc_lookupswitch(abc_code_t*prev, void* labels)
513 {
514     abc_code_t*self = add_opcode(prev, 0x1b);
515     /* FIXME: write labels labels */
516     return self;
517 }
518 abc_code_t* abc_lshift(abc_code_t*prev)
519 {
520     abc_code_t*self = add_opcode(prev, 0xa5);
521     return self;
522 }
523 abc_code_t* abc_modulo(abc_code_t*prev)
524 {
525     abc_code_t*self = add_opcode(prev, 0xa4);
526     return self;
527 }
528 abc_code_t* abc_multiply(abc_code_t*prev)
529 {
530     abc_code_t*self = add_opcode(prev, 0xa2);
531     return self;
532 }
533 abc_code_t* abc_multiply_i(abc_code_t*prev)
534 {
535     abc_code_t*self = add_opcode(prev, 0xc7);
536     return self;
537 }
538 abc_code_t* abc_negate(abc_code_t*prev)
539 {
540     abc_code_t*self = add_opcode(prev, 0x90);
541     return self;
542 }
543 abc_code_t* abc_negate_i(abc_code_t*prev)
544 {
545     abc_code_t*self = add_opcode(prev, 0xc4);
546     return self;
547 }
548 abc_code_t* abc_newactivation(abc_code_t*prev)
549 {
550     abc_code_t*self = add_opcode(prev, 0x57);
551     return self;
552 }
553 abc_code_t* abc_newarray(abc_code_t*prev, int v)
554 {
555     abc_code_t*self = add_opcode(prev, 0x56);
556     self->params[0] = (void*)(ptroff_t)v;
557     return self;
558 }
559 abc_code_t* abc_newcatch(abc_code_t*prev, int v)
560 {
561     abc_code_t*self = add_opcode(prev, 0x5a);
562     self->params[0] = (void*)(ptroff_t)v;
563     return self;
564 }
565 abc_code_t* abc_newclass(abc_code_t*prev, abc_class_t* m)
566 {
567     abc_code_t*self = add_opcode(prev, 0x58);
568     self->params[0] = m;
569     return self;
570 }
571 abc_code_t* abc_newfunction(abc_code_t*prev, abc_method_body_t* m)
572 {
573     abc_code_t*self = add_opcode(prev, 0x40);
574     self->params[0] = m;
575     return self;
576 }
577 abc_code_t* abc_newobject(abc_code_t*prev, int v)
578 {
579     abc_code_t*self = add_opcode(prev, 0x55);
580     self->params[0] = (void*)(ptroff_t)v;
581     return self;
582 }
583 abc_code_t* abc_nextname(abc_code_t*prev)
584 {
585     abc_code_t*self = add_opcode(prev, 0x1e);
586     return self;
587 }
588 abc_code_t* abc_nextvalue(abc_code_t*prev)
589 {
590     abc_code_t*self = add_opcode(prev, 0x23);
591     return self;
592 }
593 abc_code_t* abc_nop(abc_code_t*prev)
594 {
595     abc_code_t*self = add_opcode(prev, 0x02);
596     return self;
597 }
598 abc_code_t* abc_not(abc_code_t*prev)
599 {
600     abc_code_t*self = add_opcode(prev, 0x96);
601     return self;
602 }
603 abc_code_t* abc_pop(abc_code_t*prev)
604 {
605     abc_code_t*self = add_opcode(prev, 0x29);
606     return self;
607 }
608 abc_code_t* abc_popscope(abc_code_t*prev)
609 {
610     abc_code_t*self = add_opcode(prev, 0x1d);
611     return self;
612 }
613 abc_code_t* abc_pushbyte(abc_code_t*prev, int v)
614 {
615     abc_code_t*self = add_opcode(prev, 0x24);
616     self->params[0] = (void*)(ptroff_t)v;
617     return self;
618 }
619 abc_code_t* abc_pushdouble(abc_code_t*prev, int v)
620 {
621     abc_code_t*self = add_opcode(prev, 0x2f);
622     self->params[0] = (void*)(ptroff_t)v;
623     return self;
624 }
625 abc_code_t* abc_pushfalse(abc_code_t*prev)
626 {
627     abc_code_t*self = add_opcode(prev, 0x27);
628     return self;
629 }
630 abc_code_t* abc_pushint(abc_code_t*prev, int v)
631 {
632     abc_code_t*self = add_opcode(prev, 0x2d);
633     self->params[0] = (void*)(ptroff_t)v;
634     return self;
635 }
636 abc_code_t* abc_pushnamespace(abc_code_t*prev, int v)
637 {
638     abc_code_t*self = add_opcode(prev, 0x31);
639     self->params[0] = (void*)(ptroff_t)v;
640     return self;
641 }
642 abc_code_t* abc_pushnan(abc_code_t*prev)
643 {
644     abc_code_t*self = add_opcode(prev, 0x28);
645     return self;
646 }
647 abc_code_t* abc_pushnull(abc_code_t*prev)
648 {
649     abc_code_t*self = add_opcode(prev, 0x20);
650     return self;
651 }
652 abc_code_t* abc_pushscope(abc_code_t*prev)
653 {
654     abc_code_t*self = add_opcode(prev, 0x30);
655     return self;
656 }
657 abc_code_t* abc_pushshort(abc_code_t*prev, int v)
658 {
659     abc_code_t*self = add_opcode(prev, 0x25);
660     self->params[0] = (void*)(ptroff_t)v;
661     return self;
662 }
663 abc_code_t* abc_pushstring(abc_code_t*prev, char* s)
664 {
665     abc_code_t*self = add_opcode(prev, 0x2c);
666     self->params[0] = strdup(s);
667     return self;
668 }
669 abc_code_t* abc_pushtrue(abc_code_t*prev)
670 {
671     abc_code_t*self = add_opcode(prev, 0x26);
672     return self;
673 }
674 abc_code_t* abc_pushuint(abc_code_t*prev, int v)
675 {
676     abc_code_t*self = add_opcode(prev, 0x2e);
677     self->params[0] = (void*)(ptroff_t)v;
678     return self;
679 }
680 abc_code_t* abc_pushundefined(abc_code_t*prev)
681 {
682     abc_code_t*self = add_opcode(prev, 0x21);
683     return self;
684 }
685 abc_code_t* abc_pushwith(abc_code_t*prev)
686 {
687     abc_code_t*self = add_opcode(prev, 0x1c);
688     return self;
689 }
690 abc_code_t* abc_returnvalue(abc_code_t*prev)
691 {
692     abc_code_t*self = add_opcode(prev, 0x48);
693     return self;
694 }
695 abc_code_t* abc_returnvoid(abc_code_t*prev)
696 {
697     abc_code_t*self = add_opcode(prev, 0x47);
698     return self;
699 }
700 abc_code_t* abc_rshift(abc_code_t*prev)
701 {
702     abc_code_t*self = add_opcode(prev, 0xa6);
703     return self;
704 }
705 abc_code_t* abc_setlocal(abc_code_t*prev, int reg)
706 {
707     abc_code_t*self = add_opcode(prev, 0x63);
708     self->params[0] = (void*)(ptroff_t)reg;
709     return self;
710 }
711 abc_code_t* abc_setlocal_0(abc_code_t*prev)
712 {
713     abc_code_t*self = add_opcode(prev, 0xd4);
714     return self;
715 }
716 abc_code_t* abc_setlocal_1(abc_code_t*prev)
717 {
718     abc_code_t*self = add_opcode(prev, 0xd5);
719     return self;
720 }
721 abc_code_t* abc_setlocal_2(abc_code_t*prev)
722 {
723     abc_code_t*self = add_opcode(prev, 0xd6);
724     return self;
725 }
726 abc_code_t* abc_setlocal_3(abc_code_t*prev)
727 {
728     abc_code_t*self = add_opcode(prev, 0xd7);
729     return self;
730 }
731 abc_code_t* abc_setglobalslot(abc_code_t*prev, int v)
732 {
733     abc_code_t*self = add_opcode(prev, 0x6f);
734     self->params[0] = (void*)(ptroff_t)v;
735     return self;
736 }
737 abc_code_t* abc_setproperty(abc_code_t*prev, char* name)
738 {
739     abc_code_t*self = add_opcode(prev, 0x61);
740     self->params[0] = name;
741     return self;
742 }
743 abc_code_t* abc_setslot(abc_code_t*prev, char* name)
744 {
745     abc_code_t*self = add_opcode(prev, 0x6d);
746     self->params[0] = name;
747     return self;
748 }
749 abc_code_t* abc_setsuper(abc_code_t*prev, char* name)
750 {
751     abc_code_t*self = add_opcode(prev, 0x05);
752     self->params[0] = name;
753     return self;
754 }
755 abc_code_t* abc_strictequals(abc_code_t*prev)
756 {
757     abc_code_t*self = add_opcode(prev, 0xac);
758     return self;
759 }
760 abc_code_t* abc_subtract(abc_code_t*prev)
761 {
762     abc_code_t*self = add_opcode(prev, 0xa1);
763     return self;
764 }
765 abc_code_t* abc_subtract_i(abc_code_t*prev)
766 {
767     abc_code_t*self = add_opcode(prev, 0xc6);
768     return self;
769 }
770 abc_code_t* abc_swap(abc_code_t*prev)
771 {
772     abc_code_t*self = add_opcode(prev, 0x2b);
773     return self;
774 }
775 abc_code_t* abc_throw(abc_code_t*prev)
776 {
777     abc_code_t*self = add_opcode(prev, 0x03);
778     return self;
779 }
780 abc_code_t* abc_typeof(abc_code_t*prev)
781 {
782     abc_code_t*self = add_opcode(prev, 0x95);
783     return self;
784 }
785 abc_code_t* abc_urshift(abc_code_t*prev)
786 {
787     abc_code_t*self = add_opcode(prev, 0xa7);
788     return self;
789 }
790 abc_code_t* abc_xxx(abc_code_t*prev)
791 {
792     abc_code_t*self = add_opcode(prev, 0xb0);
793     return self;
794 }