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