beamcode/
instruction.rs

1//! BEAM instructions.
2//!
3//! # References
4//!
5//! - [The BEAM Book - Generic Instructions](https://blog.stenmans.org/theBeamBook/#_generic_instructions)
6//! - [erlang/otp/lib/compiler/src/genop.tab](https://github.com/erlang/otp/blob/master/lib/compiler/src/genop.tab)
7//! - erlang/otp/lib/compiler/src/beam_opcodes.erl (generated file)
8use crate::term::{self, Allocation, Atom, List, Register, Term, YRegister};
9use crate::{Decode, Encode};
10use beamcode_derive::Opcode;
11
12pub trait Opcode {
13    const CODE: u8;
14}
15
16#[derive(Debug, Clone, Decode, Encode)]
17pub enum Instruction {
18    Allocate(Allocate),
19    AllocateHeap(AllocateHeap),
20    AllocateHeapZero(AllocateHeapZero),
21    AllocateZero(AllocateZero),
22    Apply(Apply),
23    ApplyLast(ApplyLast),
24    Badmatch(Badmatch),
25    Badrecord(Badrecord),
26    Bif0(Bif0),
27    Bif1(Bif1),
28    Bif2(Bif2),
29    BsAdd(BsAdd),
30    BsAppend(BsAppend),
31    /// Deprecated.
32    BsBitsToBytes(BsBitsToBytes),
33    /// Deprecated.
34    BsBitsToBytes2(BsBitsToBytes2),
35    BsContextToBinary(BsContextToBinary),
36    BsCreateBin(BsCreateBin),
37    /// Deprecated.
38    BsFinal(BsFinal),
39    /// Deprecated.
40    BsFinal2(BsFinal2),
41    /// Deprecated.
42    BsGetBinary(BsGetBinary),
43    BsGetBinary2(BsGetBinary2),
44    /// Deprecated.
45    BsGetFloat(BsGetFloat),
46    BsGetFloat2(BsGetFloat2),
47    /// Deprecated.
48    BsGetInteger(BsGetInteger),
49    BsGetInteger2(BsGetInteger2),
50    BsGetPosition(BsGetPosition),
51    BsGetTail(BsGetTail),
52    BsGetUtf16(BsGetUtf16),
53    BsGetUtf32(BsGetUtf32),
54    BsGetUtf8(BsGetUtf8),
55    /// Deprecated.
56    BsInit(BsInit),
57    BsInit2(BsInit2),
58    BsInitBits(BsInitBits),
59    BsInitWritable(BsInitWritable),
60    BsMatchString(BsMatchString),
61    BsNeedBuf(BsNeedBuf),
62    BsPrivateAppend(BsPrivateAppend),
63    BsPutBinary(BsPutBinary),
64    BsPutFloat(BsPutFloat),
65    BsPutInteger(BsPutInteger),
66    BsPutString(BsPutString),
67    BsPutUtf32(BsPutUtf32),
68    BsPutUtf16(BsPutUtf16),
69    BsPutUtf8(BsPutUtf8),
70    /// Deprecated.
71    BsRestore(BsRestore),
72    BsRestore2(BsRestore2),
73    BsSave(BsSave),
74    BsSave2(BsSave2),
75    BsSetPosition(BsSetPosition),
76    BsSkipBits(BsSkipBits),
77    BsSkipBits2(BsSkipBits2),
78    BsSkipUtf32(BsSkipUtf32),
79    BsSkipUtf16(BsSkipUtf16),
80    BsSkipUtf8(BsSkipUtf8),
81    /// Deprecated.
82    BsStartMatch(BsStartMatch),
83    BsStartMatch2(BsStartMatch2),
84    BsStartMatch3(BsStartMatch3),
85    BsStartMatch4(BsStartMatch4),
86    /// Deprecated.
87    BsTestTail(BsTestTail),
88    BsTestTail2(BsTestTail2),
89    BsTestUnit(BsTestUnit),
90    BsUtf16Size(BsUtf16Size),
91    BsUtf8Size(BsUtf8Size),
92    BuildStacktrace(BuildStacktrace),
93    Call(Call),
94    CallExt(CallExt),
95    CallExtLast(CallExtLast),
96    CallExtOnly(CallExtOnly),
97    CallFun(CallFun),
98    CallFun2(CallFun2),
99    CallLast(CallLast),
100    CallOnly(CallOnly),
101    CaseEnd(CaseEnd),
102    Catch(Catch),
103    CatchEnd(CatchEnd),
104    Deallocate(Deallocate),
105    Fadd(Fadd),
106    Fcheckerror(Fcheckerror),
107    Fclearerror(Fclearerror),
108    Fconv(Fconv),
109    Fdiv(Fdiv),
110    Fmove(Fmove),
111    Fmul(Fmul),
112    Fnegate(Fnegate),
113    Fsub(Fsub),
114    FuncInfo(FuncInfo),
115    GcBif1(GcBif1),
116    GcBif2(GcBif2),
117    GcBif3(GcBif3),
118    GetHd(GetHd),
119    GetList(GetList),
120    GetMapElement(GetMapElement),
121    GetTl(GetTl),
122    GetTupleElement(GetTupleElement),
123    HasMapFields(HasMapFields),
124    IfEnd(IfEnd),
125    Init(Init),
126    InitYregs(InitYregs),
127    /// Deprecated.
128    IntBand(IntBand),
129    /// Deprecated.
130    IntBnot(IntBnot),
131    /// Deprecated.
132    IntBor(IntBor),
133    /// Deprecated.
134    IntBsl(IntBsl),
135    /// Deprecated.
136    IntBsr(IntBsr),
137    /// Deprecated.
138    IntBxor(IntBxor),
139    IntCodeEnd(IntCodeEnd),
140    /// Deprecated.
141    IntDiv(IntDiv),
142    /// Deprecated.
143    IntRem(IntRem),
144    IsAtom(IsAtom),
145    IsBinary(IsBinary),
146    IsBitstr(IsBitstr),
147    IsBoolean(IsBoolean),
148    /// Deprecated.
149    IsConstant(IsConstant),
150    IsEq(IsEq),
151    IsEqExact(IsEqExact),
152    IsFloat(IsFloat),
153    IsFunction(IsFunction),
154    IsFunction2(IsFunction2),
155    IsGe(IsGe),
156    IsInteger(IsInteger),
157    IsList(IsList),
158    IsLt(IsLt),
159    IsMap(IsMap),
160    IsNe(IsNe),
161    IsNeExact(IsNeExact),
162    IsNil(IsNil),
163    IsNonemptyList(IsNonemptyList),
164    IsNumber(IsNumber),
165    IsPid(IsPid),
166    IsPort(IsPort),
167    IsReference(IsReference),
168    IsTaggedTuple(IsTaggedTuple),
169    IsTuple(IsTuple),
170    Jump(Jump),
171    Label(Label),
172    Line(Line),
173    LoopRec(LoopRec),
174    LoopRecEnd(LoopRecEnd),
175    /// Deprecated.
176    MakeFun(MakeFun),
177    MakeFun2(MakeFun2),
178    MakeFun3(MakeFun3),
179    /// Deprecated.
180    MDiv(MDiv),
181    Move(Move),
182    /// Deprecated.
183    MPlus(MPlus),
184    /// Deprecated.
185    MMinus(MMinus),
186    /// Deprecated.
187    MTimes(MTimes),
188    NifStart(NifStart),
189    OnLoad(OnLoad),
190    Put(Put),
191    PutList(PutList),
192    /// Deprecated.
193    PutLiteral(PutLiteral),
194    PutMapAssoc(PutMapAssoc),
195    PutMapExact(PutMapExact),
196    /// Deprecated.
197    PutString(PutString),
198    PutTuple(PutTuple),
199    PutTuple2(PutTuple2),
200    Raise(Raise),
201    RawRaise(RawRaise),
202    RecvMark(RecvMark),
203    RecvMarkerBind(RecvMarkerBind),
204    RecvMarkerClear(RecvMarkerClear),
205    RecvMarkerReserve(RecvMarkerReserve),
206    RecvMarkerUse(RecvMarkerUse),
207    RecvSet(RecvSet),
208    Return(Return),
209    RemoveMessage(RemoveMessage),
210    SelectTupleArity(SelectTupleArity),
211    SelectVal(SelectVal),
212    Send(Send),
213    SetTupleElement(SetTupleElement),
214    Swap(Swap),
215    TestArity(TestArity),
216    TestHeap(TestHeap),
217    Timeout(Timeout),
218    Trim(Trim),
219    Try(Try),
220    TryCase(TryCase),
221    TryCaseEnd(TryCaseEnd),
222    TryEnd(TryEnd),
223    Wait(Wait),
224    WaitTimeout(WaitTimeout),
225}
226
227#[derive(Debug, Clone, Opcode, Decode, Encode)]
228#[opcode(1)]
229pub struct Label {
230    pub literal: usize,
231}
232
233#[derive(Debug, Clone, Opcode, Decode, Encode)]
234#[opcode(2)]
235pub struct FuncInfo {
236    pub module: Atom,
237    pub function: Atom,
238    pub arity: usize,
239}
240
241#[derive(Debug, Clone, Opcode, Decode, Encode)]
242#[opcode(3)]
243pub struct IntCodeEnd {}
244
245#[derive(Debug, Clone, Opcode, Decode, Encode)]
246#[opcode(4)]
247pub struct Call {
248    pub arity: usize,
249    pub label: term::Label,
250}
251
252#[derive(Debug, Clone, Opcode, Decode, Encode)]
253#[opcode(5)]
254pub struct CallLast {
255    pub arg1: Term,
256    pub arg2: Term,
257    pub arg3: Term,
258}
259
260#[derive(Debug, Clone, Opcode, Decode, Encode)]
261#[opcode(6)]
262pub struct CallOnly {
263    pub arity: usize,
264    pub label: term::Label,
265}
266
267#[derive(Debug, Clone, Opcode, Decode, Encode)]
268#[opcode(7)]
269pub struct CallExt {
270    pub arity: usize,
271    pub destination: usize,
272}
273
274#[derive(Debug, Clone, Opcode, Decode, Encode)]
275#[opcode(8)]
276pub struct CallExtLast {
277    pub arity: usize,
278    pub destination: usize,
279    pub deallocate: usize,
280}
281
282#[derive(Debug, Clone, Opcode, Decode, Encode)]
283#[opcode(9)]
284pub struct Bif0 {
285    pub arg1: Term,
286    pub arg2: Term,
287}
288
289#[derive(Debug, Clone, Opcode, Decode, Encode)]
290#[opcode(10)]
291pub struct Bif1 {
292    pub arg1: Term,
293    pub arg2: Term,
294    pub arg3: Term,
295    pub arg4: Term,
296}
297
298#[derive(Debug, Clone, Opcode, Decode, Encode)]
299#[opcode(11)]
300pub struct Bif2 {
301    pub arg1: Term,
302    pub arg2: Term,
303    pub arg3: Term,
304    pub arg4: Term,
305    pub arg5: Term,
306}
307
308#[derive(Debug, Clone, Opcode, Decode, Encode)]
309#[opcode(12)]
310pub struct Allocate {
311    pub stack_need: Allocation,
312    pub live: usize,
313}
314
315#[derive(Debug, Clone, Opcode, Decode, Encode)]
316#[opcode(13)]
317pub struct AllocateHeap {
318    pub stack_need: Allocation,
319    pub heap_need: Allocation,
320    pub live: usize,
321}
322
323#[derive(Debug, Clone, Opcode, Decode, Encode)]
324#[opcode(14)]
325pub struct AllocateZero {
326    pub arg1: Term,
327    pub arg2: Term,
328}
329
330#[derive(Debug, Clone, Opcode, Decode, Encode)]
331#[opcode(15)]
332pub struct AllocateHeapZero {
333    pub stack_need: Allocation,
334    pub heap_need: Allocation,
335    pub live: usize,
336}
337
338#[derive(Debug, Clone, Opcode, Decode, Encode)]
339#[opcode(16)]
340pub struct TestHeap {
341    pub heap_need: Allocation,
342    pub live: usize,
343}
344
345#[derive(Debug, Clone, Opcode, Decode, Encode)]
346#[opcode(17)]
347pub struct Init {
348    pub arg1: Term,
349}
350
351#[derive(Debug, Clone, Opcode, Decode, Encode)]
352#[opcode(18)]
353pub struct Deallocate {
354    pub n: usize,
355}
356
357#[derive(Debug, Clone, Opcode, Decode, Encode)]
358#[opcode(19)]
359pub struct Return {}
360
361#[derive(Debug, Clone, Opcode, Decode, Encode)]
362#[opcode(20)]
363pub struct Send {}
364
365#[derive(Debug, Clone, Opcode, Decode, Encode)]
366#[opcode(21)]
367pub struct RemoveMessage {}
368
369#[derive(Debug, Clone, Opcode, Decode, Encode)]
370#[opcode(22)]
371pub struct Timeout {}
372
373#[derive(Debug, Clone, Opcode, Decode, Encode)]
374#[opcode(23)]
375pub struct LoopRec {
376    pub arg1: Term,
377    pub arg2: Term,
378}
379
380#[derive(Debug, Clone, Opcode, Decode, Encode)]
381#[opcode(24)]
382pub struct LoopRecEnd {
383    pub arg1: Term,
384}
385
386#[derive(Debug, Clone, Opcode, Decode, Encode)]
387#[opcode(25)]
388pub struct Wait {
389    pub arg1: Term,
390}
391
392#[derive(Debug, Clone, Opcode, Decode, Encode)]
393#[opcode(26)]
394pub struct WaitTimeout {
395    pub arg1: Term,
396    pub arg2: Term,
397}
398
399/// Deprecated.
400#[derive(Debug, Clone, Opcode, Decode, Encode)]
401#[opcode(27)]
402pub struct MPlus {
403    pub arg1: Term,
404    pub arg2: Term,
405    pub arg3: Term,
406    pub arg4: Term,
407}
408
409/// Deprecated.
410#[derive(Debug, Clone, Opcode, Decode, Encode)]
411#[opcode(28)]
412pub struct MMinus {
413    pub arg1: Term,
414    pub arg2: Term,
415    pub arg3: Term,
416    pub arg4: Term,
417}
418
419/// Deprecated.
420#[derive(Debug, Clone, Opcode, Decode, Encode)]
421#[opcode(29)]
422pub struct MTimes {
423    pub arg1: Term,
424    pub arg2: Term,
425    pub arg3: Term,
426    pub arg4: Term,
427}
428
429/// Deprecated.
430#[derive(Debug, Clone, Opcode, Decode, Encode)]
431#[opcode(30)]
432pub struct MDiv {
433    pub arg1: Term,
434    pub arg2: Term,
435    pub arg3: Term,
436    pub arg4: Term,
437}
438
439/// Deprecated.
440#[derive(Debug, Clone, Opcode, Decode, Encode)]
441#[opcode(31)]
442pub struct IntDiv {
443    pub arg1: Term,
444    pub arg2: Term,
445    pub arg3: Term,
446    pub arg4: Term,
447}
448
449/// Deprecated.
450#[derive(Debug, Clone, Opcode, Decode, Encode)]
451#[opcode(32)]
452pub struct IntRem {
453    pub arg1: Term,
454    pub arg2: Term,
455    pub arg3: Term,
456    pub arg4: Term,
457}
458
459/// Deprecated.
460#[derive(Debug, Clone, Opcode, Decode, Encode)]
461#[opcode(33)]
462pub struct IntBand {
463    pub arg1: Term,
464    pub arg2: Term,
465    pub arg3: Term,
466    pub arg4: Term,
467}
468
469/// Deprecated.
470#[derive(Debug, Clone, Opcode, Decode, Encode)]
471#[opcode(34)]
472pub struct IntBor {
473    pub arg1: Term,
474    pub arg2: Term,
475    pub arg3: Term,
476    pub arg4: Term,
477}
478
479/// Deprecated.
480#[derive(Debug, Clone, Opcode, Decode, Encode)]
481#[opcode(35)]
482pub struct IntBxor {
483    pub arg1: Term,
484    pub arg2: Term,
485    pub arg3: Term,
486    pub arg4: Term,
487}
488
489/// Deprecated.
490#[derive(Debug, Clone, Opcode, Decode, Encode)]
491#[opcode(36)]
492pub struct IntBsl {
493    pub arg1: Term,
494    pub arg2: Term,
495    pub arg3: Term,
496    pub arg4: Term,
497}
498
499/// Deprecated.
500#[derive(Debug, Clone, Opcode, Decode, Encode)]
501#[opcode(37)]
502pub struct IntBsr {
503    pub arg1: Term,
504    pub arg2: Term,
505    pub arg3: Term,
506    pub arg4: Term,
507}
508
509/// Deprecated.
510#[derive(Debug, Clone, Opcode, Decode, Encode)]
511#[opcode(38)]
512pub struct IntBnot {
513    pub arg1: Term,
514    pub arg2: Term,
515    pub arg3: Term,
516}
517
518#[derive(Debug, Clone, Opcode, Decode, Encode)]
519#[opcode(39)]
520pub struct IsLt {
521    pub arg1: Term,
522    pub arg2: Term,
523    pub arg3: Term,
524}
525
526#[derive(Debug, Clone, Opcode, Decode, Encode)]
527#[opcode(40)]
528pub struct IsGe {
529    pub arg1: Term,
530    pub arg2: Term,
531    pub arg3: Term,
532}
533
534#[derive(Debug, Clone, Opcode, Decode, Encode)]
535#[opcode(41)]
536pub struct IsEq {
537    pub arg1: Term,
538    pub arg2: Term,
539    pub arg3: Term,
540}
541
542#[derive(Debug, Clone, Opcode, Decode, Encode)]
543#[opcode(42)]
544pub struct IsNe {
545    pub arg1: Term,
546    pub arg2: Term,
547    pub arg3: Term,
548}
549
550#[derive(Debug, Clone, Opcode, Decode, Encode)]
551#[opcode(43)]
552pub struct IsEqExact {
553    pub label: term::Label,
554    pub arg1: Term,
555    pub arg2: Term,
556}
557
558#[derive(Debug, Clone, Opcode, Decode, Encode)]
559#[opcode(44)]
560pub struct IsNeExact {
561    pub label: term::Label,
562    pub arg1: Term,
563    pub arg2: Term,
564}
565
566#[derive(Debug, Clone, Opcode, Decode, Encode)]
567#[opcode(45)]
568pub struct IsInteger {
569    pub label: term::Label,
570    pub arg1: Term,
571}
572
573#[derive(Debug, Clone, Opcode, Decode, Encode)]
574#[opcode(46)]
575pub struct IsFloat {
576    pub label: term::Label,
577    pub arg1: Term,
578}
579
580#[derive(Debug, Clone, Opcode, Decode, Encode)]
581#[opcode(47)]
582pub struct IsNumber {
583    pub label: term::Label,
584    pub arg1: Term,
585}
586
587#[derive(Debug, Clone, Opcode, Decode, Encode)]
588#[opcode(48)]
589pub struct IsAtom {
590    pub label: term::Label,
591    pub arg1: Term,
592}
593
594#[derive(Debug, Clone, Opcode, Decode, Encode)]
595#[opcode(49)]
596pub struct IsPid {
597    pub label: term::Label,
598    pub arg1: Term,
599}
600
601#[derive(Debug, Clone, Opcode, Decode, Encode)]
602#[opcode(50)]
603pub struct IsReference {
604    pub label: term::Label,
605    pub arg1: Term,
606}
607
608#[derive(Debug, Clone, Opcode, Decode, Encode)]
609#[opcode(51)]
610pub struct IsPort {
611    pub label: term::Label,
612    pub arg1: Term,
613}
614
615#[derive(Debug, Clone, Opcode, Decode, Encode)]
616#[opcode(52)]
617pub struct IsNil {
618    pub label: term::Label,
619    pub arg1: Term,
620}
621
622#[derive(Debug, Clone, Opcode, Decode, Encode)]
623#[opcode(53)]
624pub struct IsBinary {
625    pub label: term::Label,
626    pub arg1: Term,
627}
628
629/// Deprecated.
630#[derive(Debug, Clone, Opcode, Decode, Encode)]
631#[opcode(54)]
632pub struct IsConstant {
633    pub label: term::Label,
634    pub arg1: Term,
635}
636
637#[derive(Debug, Clone, Opcode, Decode, Encode)]
638#[opcode(55)]
639pub struct IsList {
640    pub label: term::Label,
641    pub arg1: Term,
642}
643
644#[derive(Debug, Clone, Opcode, Decode, Encode)]
645#[opcode(56)]
646pub struct IsNonemptyList {
647    pub label: term::Label,
648    pub arg1: Term,
649}
650
651#[derive(Debug, Clone, Opcode, Decode, Encode)]
652#[opcode(57)]
653pub struct IsTuple {
654    pub label: term::Label,
655    pub arg1: Term,
656}
657
658#[derive(Debug, Clone, Opcode, Decode, Encode)]
659#[opcode(58)]
660pub struct TestArity {
661    pub label: term::Label,
662    pub arg1: Term,
663    pub arity: usize,
664}
665
666#[derive(Debug, Clone, Opcode, Decode, Encode)]
667#[opcode(59)]
668pub struct SelectVal {
669    pub arg: Term,
670    pub fail_label: term::Label,
671    pub destinations: List,
672}
673
674#[derive(Debug, Clone, Opcode, Decode, Encode)]
675#[opcode(60)]
676pub struct SelectTupleArity {
677    pub arg1: Term,
678    pub arg2: Term,
679    pub arg3: Term,
680}
681
682#[derive(Debug, Clone, Opcode, Decode, Encode)]
683#[opcode(61)]
684pub struct Jump {
685    pub label: term::Label,
686}
687
688#[derive(Debug, Clone, Opcode, Decode, Encode)]
689#[opcode(62)]
690pub struct Catch {
691    pub arg1: Term,
692    pub arg2: Term,
693}
694
695#[derive(Debug, Clone, Opcode, Decode, Encode)]
696#[opcode(63)]
697pub struct CatchEnd {
698    pub arg1: Term,
699}
700
701#[derive(Debug, Clone, Opcode, Decode, Encode)]
702#[opcode(64)]
703pub struct Move {
704    pub src: Term,
705    pub dst: Register,
706}
707
708#[derive(Debug, Clone, Opcode, Decode, Encode)]
709#[opcode(65)]
710pub struct GetList {
711    pub source: Term,
712    pub head: Register,
713    pub tail: Register,
714}
715
716#[derive(Debug, Clone, Opcode, Decode, Encode)]
717#[opcode(66)]
718pub struct GetTupleElement {
719    pub source: Register,
720    pub element: usize,
721    pub destination: Register,
722}
723
724#[derive(Debug, Clone, Opcode, Decode, Encode)]
725#[opcode(67)]
726pub struct SetTupleElement {
727    pub arg1: Term,
728    pub arg2: Term,
729    pub arg3: Term,
730}
731
732/// Deprecated.
733#[derive(Debug, Clone, Opcode, Decode, Encode)]
734#[opcode(68)]
735pub struct PutString {
736    pub arg1: Term,
737    pub arg2: Term,
738    pub arg3: Term,
739}
740
741#[derive(Debug, Clone, Opcode, Decode, Encode)]
742#[opcode(69)]
743pub struct PutList {
744    pub head: Term,
745    pub tail: Term,
746    pub destination: Register,
747}
748
749#[derive(Debug, Clone, Opcode, Decode, Encode)]
750#[opcode(70)]
751pub struct PutTuple {
752    pub arg1: Term,
753    pub arg2: Term,
754}
755
756#[derive(Debug, Clone, Opcode, Decode, Encode)]
757#[opcode(71)]
758pub struct Put {
759    pub arg1: Term,
760}
761
762#[derive(Debug, Clone, Opcode, Decode, Encode)]
763#[opcode(72)]
764pub struct Badmatch {
765    pub arg1: Term,
766}
767
768#[derive(Debug, Clone, Opcode, Decode, Encode)]
769#[opcode(73)]
770pub struct IfEnd {}
771
772#[derive(Debug, Clone, Opcode, Decode, Encode)]
773#[opcode(74)]
774pub struct CaseEnd {
775    pub arg1: Term,
776}
777
778#[derive(Debug, Clone, Opcode, Decode, Encode)]
779#[opcode(75)]
780pub struct CallFun {
781    pub arg1: Term,
782}
783
784/// Deprecated.
785#[derive(Debug, Clone, Opcode, Decode, Encode)]
786#[opcode(76)]
787pub struct MakeFun {
788    pub arg1: Term,
789    pub arg2: Term,
790    pub arg3: Term,
791}
792
793#[derive(Debug, Clone, Opcode, Decode, Encode)]
794#[opcode(77)]
795pub struct IsFunction {
796    pub arg1: Term,
797    pub arg2: Term,
798}
799
800#[derive(Debug, Clone, Opcode, Decode, Encode)]
801#[opcode(78)]
802pub struct CallExtOnly {
803    pub arity: usize,
804    pub destination: usize,
805}
806
807/// Deprecated.
808#[derive(Debug, Clone, Opcode, Decode, Encode)]
809#[opcode(79)]
810pub struct BsStartMatch {
811    pub arg1: Term,
812    pub arg2: Term,
813}
814
815/// Deprecated.
816#[derive(Debug, Clone, Opcode, Decode, Encode)]
817#[opcode(80)]
818pub struct BsGetInteger {
819    pub arg1: Term,
820    pub arg2: Term,
821    pub arg3: Term,
822    pub arg4: Term,
823    pub arg5: Term,
824}
825
826/// Deprecated.
827#[derive(Debug, Clone, Opcode, Decode, Encode)]
828#[opcode(81)]
829pub struct BsGetFloat {
830    pub arg1: Term,
831    pub arg2: Term,
832    pub arg3: Term,
833    pub arg4: Term,
834    pub arg5: Term,
835}
836
837/// Deprecated.
838#[derive(Debug, Clone, Opcode, Decode, Encode)]
839#[opcode(82)]
840pub struct BsGetBinary {
841    pub arg1: Term,
842    pub arg2: Term,
843    pub arg3: Term,
844    pub arg4: Term,
845    pub arg5: Term,
846}
847
848#[derive(Debug, Clone, Opcode, Decode, Encode)]
849#[opcode(83)]
850pub struct BsSkipBits {
851    pub arg1: Term,
852    pub arg2: Term,
853    pub arg3: Term,
854    pub arg4: Term,
855}
856
857/// Deprecated.
858#[derive(Debug, Clone, Opcode, Decode, Encode)]
859#[opcode(84)]
860pub struct BsTestTail {
861    pub arg1: Term,
862    pub arg2: Term,
863}
864
865#[derive(Debug, Clone, Opcode, Decode, Encode)]
866#[opcode(85)]
867pub struct BsSave {
868    pub arg1: Term,
869}
870
871/// Deprecated.
872#[derive(Debug, Clone, Opcode, Decode, Encode)]
873#[opcode(86)]
874pub struct BsRestore {
875    pub arg1: Term,
876}
877
878/// Deprecated.
879#[derive(Debug, Clone, Opcode, Decode, Encode)]
880#[opcode(87)]
881pub struct BsInit {
882    pub arg1: Term,
883    pub arg2: Term,
884}
885
886/// Deprecated.
887#[derive(Debug, Clone, Opcode, Decode, Encode)]
888#[opcode(88)]
889pub struct BsFinal {
890    pub arg1: Term,
891    pub arg2: Term,
892}
893
894#[derive(Debug, Clone, Opcode, Decode, Encode)]
895#[opcode(89)]
896pub struct BsPutInteger {
897    pub arg1: Term,
898    pub arg2: Term,
899    pub arg3: Term,
900    pub arg4: Term,
901    pub arg5: Term,
902}
903
904#[derive(Debug, Clone, Opcode, Decode, Encode)]
905#[opcode(90)]
906pub struct BsPutBinary {
907    pub arg1: Term,
908    pub arg2: Term,
909    pub arg3: Term,
910    pub arg4: Term,
911    pub arg5: Term,
912}
913
914#[derive(Debug, Clone, Opcode, Decode, Encode)]
915#[opcode(91)]
916pub struct BsPutFloat {
917    pub arg1: Term,
918    pub arg2: Term,
919    pub arg3: Term,
920    pub arg4: Term,
921    pub arg5: Term,
922}
923
924#[derive(Debug, Clone, Opcode, Decode, Encode)]
925#[opcode(92)]
926pub struct BsPutString {
927    pub arg1: Term,
928    pub arg2: Term,
929}
930
931#[derive(Debug, Clone, Opcode, Decode, Encode)]
932#[opcode(93)]
933pub struct BsNeedBuf {
934    pub arg1: Term,
935}
936
937#[derive(Debug, Clone, Opcode, Decode, Encode)]
938#[opcode(94)]
939pub struct Fclearerror {}
940
941#[derive(Debug, Clone, Opcode, Decode, Encode)]
942#[opcode(95)]
943pub struct Fcheckerror {
944    pub arg1: Term,
945}
946
947#[derive(Debug, Clone, Opcode, Decode, Encode)]
948#[opcode(96)]
949pub struct Fmove {
950    pub arg1: Term,
951    pub arg2: Term,
952}
953
954#[derive(Debug, Clone, Opcode, Decode, Encode)]
955#[opcode(97)]
956pub struct Fconv {
957    pub arg1: Term,
958    pub arg2: Term,
959}
960
961#[derive(Debug, Clone, Opcode, Decode, Encode)]
962#[opcode(98)]
963pub struct Fadd {
964    pub arg1: Term,
965    pub arg2: Term,
966    pub arg3: Term,
967    pub arg4: Term,
968}
969
970#[derive(Debug, Clone, Opcode, Decode, Encode)]
971#[opcode(99)]
972pub struct Fsub {
973    pub arg1: Term,
974    pub arg2: Term,
975    pub arg3: Term,
976    pub arg4: Term,
977}
978
979#[derive(Debug, Clone, Opcode, Decode, Encode)]
980#[opcode(100)]
981pub struct Fmul {
982    pub arg1: Term,
983    pub arg2: Term,
984    pub arg3: Term,
985    pub arg4: Term,
986}
987
988#[derive(Debug, Clone, Opcode, Decode, Encode)]
989#[opcode(101)]
990pub struct Fdiv {
991    pub arg1: Term,
992    pub arg2: Term,
993    pub arg3: Term,
994    pub arg4: Term,
995}
996
997#[derive(Debug, Clone, Opcode, Decode, Encode)]
998#[opcode(102)]
999pub struct Fnegate {
1000    pub arg1: Term,
1001    pub arg2: Term,
1002    pub arg3: Term,
1003}
1004
1005#[derive(Debug, Clone, Opcode, Decode, Encode)]
1006#[opcode(103)]
1007pub struct MakeFun2 {
1008    pub arg1: Term,
1009}
1010
1011#[derive(Debug, Clone, Opcode, Decode, Encode)]
1012#[opcode(104)]
1013pub struct Try {
1014    pub register: Register,
1015    pub label: term::Label,
1016}
1017
1018#[derive(Debug, Clone, Opcode, Decode, Encode)]
1019#[opcode(105)]
1020pub struct TryEnd {
1021    pub register: Register,
1022}
1023
1024#[derive(Debug, Clone, Opcode, Decode, Encode)]
1025#[opcode(106)]
1026pub struct TryCase {
1027    pub register: Register,
1028}
1029
1030#[derive(Debug, Clone, Opcode, Decode, Encode)]
1031#[opcode(107)]
1032pub struct TryCaseEnd {
1033    pub arg1: Term,
1034}
1035
1036#[derive(Debug, Clone, Opcode, Decode, Encode)]
1037#[opcode(108)]
1038pub struct Raise {
1039    pub stacktrace: Term,
1040    pub exc_value: Term,
1041}
1042
1043#[derive(Debug, Clone, Opcode, Decode, Encode)]
1044#[opcode(109)]
1045pub struct BsInit2 {
1046    pub arg1: Term,
1047    pub arg2: Term,
1048    pub arg3: Term,
1049    pub arg4: Term,
1050    pub arg5: Term,
1051    pub arg6: Term,
1052}
1053
1054/// Deprecated.
1055#[derive(Debug, Clone, Opcode, Decode, Encode)]
1056#[opcode(110)]
1057pub struct BsBitsToBytes {
1058    pub arg1: Term,
1059    pub arg2: Term,
1060    pub arg3: Term,
1061}
1062
1063#[derive(Debug, Clone, Opcode, Decode, Encode)]
1064#[opcode(111)]
1065pub struct BsAdd {
1066    pub arg1: Term,
1067    pub arg2: Term,
1068    pub arg3: Term,
1069    pub arg4: Term,
1070    pub arg5: Term,
1071}
1072
1073#[derive(Debug, Clone, Opcode, Decode, Encode)]
1074#[opcode(112)]
1075pub struct Apply {
1076    pub arg1: Term,
1077}
1078
1079#[derive(Debug, Clone, Opcode, Decode, Encode)]
1080#[opcode(113)]
1081pub struct ApplyLast {
1082    pub arg1: Term,
1083    pub arg2: Term,
1084}
1085
1086#[derive(Debug, Clone, Opcode, Decode, Encode)]
1087#[opcode(114)]
1088pub struct IsBoolean {
1089    pub arg1: Term,
1090    pub arg2: Term,
1091}
1092
1093#[derive(Debug, Clone, Opcode, Decode, Encode)]
1094#[opcode(115)]
1095pub struct IsFunction2 {
1096    pub arg1: Term,
1097    pub arg2: Term,
1098    pub arg3: Term,
1099}
1100
1101#[derive(Debug, Clone, Opcode, Decode, Encode)]
1102#[opcode(116)]
1103pub struct BsStartMatch2 {
1104    pub arg1: Term,
1105    pub arg2: Term,
1106    pub arg3: Term,
1107    pub arg4: Term,
1108    pub arg5: Term,
1109}
1110
1111#[derive(Debug, Clone, Opcode, Decode, Encode)]
1112#[opcode(117)]
1113pub struct BsGetInteger2 {
1114    pub arg1: Term,
1115    pub arg2: Term,
1116    pub arg3: Term,
1117    pub arg4: Term,
1118    pub arg5: Term,
1119    pub arg6: Term,
1120    pub arg7: Term,
1121}
1122
1123#[derive(Debug, Clone, Opcode, Decode, Encode)]
1124#[opcode(118)]
1125pub struct BsGetFloat2 {
1126    pub arg1: Term,
1127    pub arg2: Term,
1128    pub arg3: Term,
1129    pub arg4: Term,
1130    pub arg5: Term,
1131    pub arg6: Term,
1132    pub arg7: Term,
1133}
1134
1135#[derive(Debug, Clone, Opcode, Decode, Encode)]
1136#[opcode(119)]
1137pub struct BsGetBinary2 {
1138    pub arg1: Term,
1139    pub arg2: Term,
1140    pub arg3: Term,
1141    pub arg4: Term,
1142    pub arg5: Term,
1143    pub arg6: Term,
1144    pub arg7: Term,
1145}
1146
1147#[derive(Debug, Clone, Opcode, Decode, Encode)]
1148#[opcode(120)]
1149pub struct BsSkipBits2 {
1150    pub arg1: Term,
1151    pub arg2: Term,
1152    pub arg3: Term,
1153    pub arg4: Term,
1154    pub arg5: Term,
1155}
1156
1157#[derive(Debug, Clone, Opcode, Decode, Encode)]
1158#[opcode(121)]
1159pub struct BsTestTail2 {
1160    pub arg1: Term,
1161    pub arg2: Term,
1162    pub arg3: Term,
1163}
1164
1165#[derive(Debug, Clone, Opcode, Decode, Encode)]
1166#[opcode(122)]
1167pub struct BsSave2 {
1168    pub arg1: Term,
1169    pub arg2: Term,
1170}
1171
1172#[derive(Debug, Clone, Opcode, Decode, Encode)]
1173#[opcode(123)]
1174pub struct BsRestore2 {
1175    pub arg1: Term,
1176    pub arg2: Term,
1177}
1178
1179#[derive(Debug, Clone, Opcode, Decode, Encode)]
1180#[opcode(124)]
1181pub struct GcBif1 {
1182    pub arg1: Term,
1183    pub arg2: Term,
1184    pub arg3: Term,
1185    pub arg4: Term,
1186    pub arg5: Term,
1187}
1188
1189#[derive(Debug, Clone, Opcode, Decode, Encode)]
1190#[opcode(125)]
1191pub struct GcBif2 {
1192    pub arg1: Term,
1193    pub arg2: Term,
1194    pub arg3: Term,
1195    pub arg4: Term,
1196    pub arg5: Term,
1197    pub arg6: Term,
1198}
1199
1200/// Deprecated.
1201#[derive(Debug, Clone, Opcode, Decode, Encode)]
1202#[opcode(126)]
1203pub struct BsFinal2 {
1204    pub arg1: Term,
1205    pub arg2: Term,
1206}
1207
1208/// Deprecated.
1209#[derive(Debug, Clone, Opcode, Decode, Encode)]
1210#[opcode(127)]
1211pub struct BsBitsToBytes2 {
1212    pub arg1: Term,
1213    pub arg2: Term,
1214}
1215
1216/// Deprecated.
1217#[derive(Debug, Clone, Opcode, Decode, Encode)]
1218#[opcode(128)]
1219pub struct PutLiteral {
1220    pub arg1: Term,
1221    pub arg2: Term,
1222}
1223
1224#[derive(Debug, Clone, Opcode, Decode, Encode)]
1225#[opcode(129)]
1226pub struct IsBitstr {
1227    pub arg1: Term,
1228    pub arg2: Term,
1229}
1230
1231#[derive(Debug, Clone, Opcode, Decode, Encode)]
1232#[opcode(130)]
1233pub struct BsContextToBinary {
1234    pub arg1: Term,
1235}
1236
1237#[derive(Debug, Clone, Opcode, Decode, Encode)]
1238#[opcode(131)]
1239pub struct BsTestUnit {
1240    pub arg1: Term,
1241    pub arg2: Term,
1242    pub arg3: Term,
1243}
1244
1245#[derive(Debug, Clone, Opcode, Decode, Encode)]
1246#[opcode(132)]
1247pub struct BsMatchString {
1248    pub arg1: Term,
1249    pub arg2: Term,
1250    pub arg3: Term,
1251    pub arg4: Term,
1252}
1253
1254#[derive(Debug, Clone, Opcode, Decode, Encode)]
1255#[opcode(133)]
1256pub struct BsInitWritable {}
1257
1258#[derive(Debug, Clone, Opcode, Decode, Encode)]
1259#[opcode(134)]
1260pub struct BsAppend {
1261    pub arg1: Term,
1262    pub arg2: Term,
1263    pub arg3: Term,
1264    pub arg4: Term,
1265    pub arg5: Term,
1266    pub arg6: Term,
1267    pub arg7: Term,
1268    pub arg8: Term,
1269}
1270
1271#[derive(Debug, Clone, Opcode, Decode, Encode)]
1272#[opcode(135)]
1273pub struct BsPrivateAppend {
1274    pub arg1: Term,
1275    pub arg2: Term,
1276    pub arg3: Term,
1277    pub arg4: Term,
1278    pub arg5: Term,
1279    pub arg6: Term,
1280}
1281
1282#[derive(Debug, Clone, Opcode, Decode, Encode)]
1283#[opcode(136)]
1284pub struct Trim {
1285    pub arg1: Term,
1286    pub arg2: Term,
1287}
1288
1289#[derive(Debug, Clone, Opcode, Decode, Encode)]
1290#[opcode(137)]
1291pub struct BsInitBits {
1292    pub arg1: Term,
1293    pub arg2: Term,
1294    pub arg3: Term,
1295    pub arg4: Term,
1296    pub arg5: Term,
1297    pub arg6: Term,
1298}
1299
1300#[derive(Debug, Clone, Opcode, Decode, Encode)]
1301#[opcode(138)]
1302pub struct BsGetUtf8 {
1303    pub arg1: Term,
1304    pub arg2: Term,
1305    pub arg3: Term,
1306    pub arg4: Term,
1307    pub arg5: Term,
1308}
1309
1310#[derive(Debug, Clone, Opcode, Decode, Encode)]
1311#[opcode(139)]
1312pub struct BsSkipUtf8 {
1313    pub arg1: Term,
1314    pub arg2: Term,
1315    pub arg3: Term,
1316    pub arg4: Term,
1317}
1318
1319#[derive(Debug, Clone, Opcode, Decode, Encode)]
1320#[opcode(140)]
1321pub struct BsGetUtf16 {
1322    pub arg1: Term,
1323    pub arg2: Term,
1324    pub arg3: Term,
1325    pub arg4: Term,
1326    pub arg5: Term,
1327}
1328
1329#[derive(Debug, Clone, Opcode, Decode, Encode)]
1330#[opcode(141)]
1331pub struct BsSkipUtf16 {
1332    pub arg1: Term,
1333    pub arg2: Term,
1334    pub arg3: Term,
1335    pub arg4: Term,
1336}
1337
1338#[derive(Debug, Clone, Opcode, Decode, Encode)]
1339#[opcode(142)]
1340pub struct BsGetUtf32 {
1341    pub arg1: Term,
1342    pub arg2: Term,
1343    pub arg3: Term,
1344    pub arg4: Term,
1345    pub arg5: Term,
1346}
1347
1348#[derive(Debug, Clone, Opcode, Decode, Encode)]
1349#[opcode(143)]
1350pub struct BsSkipUtf32 {
1351    pub arg1: Term,
1352    pub arg2: Term,
1353    pub arg3: Term,
1354    pub arg4: Term,
1355}
1356
1357#[derive(Debug, Clone, Opcode, Decode, Encode)]
1358#[opcode(144)]
1359pub struct BsUtf8Size {
1360    pub arg1: Term,
1361    pub arg2: Term,
1362    pub arg3: Term,
1363}
1364
1365#[derive(Debug, Clone, Opcode, Decode, Encode)]
1366#[opcode(145)]
1367pub struct BsPutUtf8 {
1368    pub arg1: Term,
1369    pub arg2: Term,
1370    pub arg3: Term,
1371}
1372
1373#[derive(Debug, Clone, Opcode, Decode, Encode)]
1374#[opcode(146)]
1375pub struct BsUtf16Size {
1376    pub arg1: Term,
1377    pub arg2: Term,
1378    pub arg3: Term,
1379}
1380
1381#[derive(Debug, Clone, Opcode, Decode, Encode)]
1382#[opcode(147)]
1383pub struct BsPutUtf16 {
1384    pub arg1: Term,
1385    pub arg2: Term,
1386    pub arg3: Term,
1387}
1388
1389#[derive(Debug, Clone, Opcode, Decode, Encode)]
1390#[opcode(148)]
1391pub struct BsPutUtf32 {
1392    pub arg1: Term,
1393    pub arg2: Term,
1394    pub arg3: Term,
1395}
1396
1397#[derive(Debug, Clone, Opcode, Decode, Encode)]
1398#[opcode(149)]
1399pub struct OnLoad {}
1400
1401#[derive(Debug, Clone, Opcode, Decode, Encode)]
1402#[opcode(150)]
1403pub struct RecvMark {
1404    pub arg1: Term,
1405}
1406
1407#[derive(Debug, Clone, Opcode, Decode, Encode)]
1408#[opcode(151)]
1409pub struct RecvSet {
1410    pub arg1: Term,
1411}
1412
1413#[derive(Debug, Clone, Opcode, Decode, Encode)]
1414#[opcode(152)]
1415pub struct GcBif3 {
1416    pub arg1: Term,
1417    pub arg2: Term,
1418    pub arg3: Term,
1419    pub arg4: Term,
1420    pub arg5: Term,
1421    pub arg6: Term,
1422    pub arg7: Term,
1423}
1424
1425#[derive(Debug, Clone, Opcode, Decode, Encode)]
1426#[opcode(153)]
1427pub struct Line {
1428    pub literal: usize,
1429}
1430
1431#[derive(Debug, Clone, Opcode, Decode, Encode)]
1432#[opcode(154)]
1433pub struct PutMapAssoc {
1434    pub arg1: Term,
1435    pub arg2: Term,
1436    pub arg3: Term,
1437    pub arg4: Term,
1438    pub arg5: Term,
1439}
1440
1441#[derive(Debug, Clone, Opcode, Decode, Encode)]
1442#[opcode(155)]
1443pub struct PutMapExact {
1444    pub arg1: Term,
1445    pub arg2: Term,
1446    pub arg3: Term,
1447    pub arg4: Term,
1448    pub arg5: Term,
1449}
1450
1451#[derive(Debug, Clone, Opcode, Decode, Encode)]
1452#[opcode(156)]
1453pub struct IsMap {
1454    pub arg1: Term,
1455    pub arg2: Term,
1456}
1457
1458#[derive(Debug, Clone, Opcode, Decode, Encode)]
1459#[opcode(157)]
1460pub struct HasMapFields {
1461    pub arg1: Term,
1462    pub arg2: Term,
1463    pub arg3: Term,
1464}
1465
1466#[derive(Debug, Clone, Opcode, Decode, Encode)]
1467#[opcode(158)]
1468pub struct GetMapElement {
1469    pub arg1: Term,
1470    pub arg2: Term,
1471    pub arg3: Term,
1472}
1473
1474#[derive(Debug, Clone, Opcode, Decode, Encode)]
1475#[opcode(159)]
1476pub struct IsTaggedTuple {
1477    pub label: term::Label,
1478    pub register: Register,
1479    pub arity: usize,
1480    pub atom: Atom,
1481}
1482
1483#[derive(Debug, Clone, Opcode, Decode, Encode)]
1484#[opcode(160)]
1485pub struct BuildStacktrace {}
1486
1487#[derive(Debug, Clone, Opcode, Decode, Encode)]
1488#[opcode(161)]
1489pub struct RawRaise {}
1490
1491#[derive(Debug, Clone, Opcode, Decode, Encode)]
1492#[opcode(162)]
1493pub struct GetHd {
1494    pub arg1: Term,
1495    pub arg2: Term,
1496}
1497
1498#[derive(Debug, Clone, Opcode, Decode, Encode)]
1499#[opcode(163)]
1500pub struct GetTl {
1501    pub arg1: Term,
1502    pub arg2: Term,
1503}
1504
1505#[derive(Debug, Clone, Opcode, Decode, Encode)]
1506#[opcode(164)]
1507pub struct PutTuple2 {
1508    pub destination: Register,
1509    pub elements: List,
1510}
1511
1512#[derive(Debug, Clone, Opcode, Decode, Encode)]
1513#[opcode(165)]
1514pub struct BsGetTail {
1515    pub context: Term,
1516    pub destination: Register,
1517    pub live: usize,
1518}
1519
1520#[derive(Debug, Clone, Opcode, Decode, Encode)]
1521#[opcode(166)]
1522pub struct BsStartMatch3 {
1523    pub fail: term::Label,
1524    pub bin: Term,
1525    pub live: usize,
1526    pub destination: Register,
1527}
1528
1529#[derive(Debug, Clone, Opcode, Decode, Encode)]
1530#[opcode(167)]
1531pub struct BsGetPosition {
1532    pub context: Term,
1533    pub destination: Register,
1534    pub live: usize,
1535}
1536
1537#[derive(Debug, Clone, Opcode, Decode, Encode)]
1538#[opcode(168)]
1539pub struct BsSetPosition {
1540    pub context: Term,
1541    pub position: Term,
1542}
1543
1544#[derive(Debug, Clone, Opcode, Decode, Encode)]
1545#[opcode(169)]
1546pub struct Swap {
1547    pub arg1: Term,
1548    pub arg2: Term,
1549}
1550
1551#[derive(Debug, Clone, Opcode, Decode, Encode)]
1552#[opcode(170)]
1553pub struct BsStartMatch4 {
1554    pub arg1: Term,
1555    pub arg2: Term,
1556    pub arg3: Term,
1557    pub arg4: Term,
1558}
1559
1560#[derive(Debug, Clone, Opcode, Decode, Encode)]
1561#[opcode(171)]
1562pub struct MakeFun3 {
1563    pub arg1: Term,
1564    pub arg2: Term,
1565    pub arg3: Term,
1566}
1567
1568#[derive(Debug, Clone, Opcode, Decode, Encode)]
1569#[opcode(172)]
1570pub struct InitYregs {
1571    pub registers: Vec<YRegister>,
1572}
1573
1574#[derive(Debug, Clone, Opcode, Decode, Encode)]
1575#[opcode(173)]
1576pub struct RecvMarkerBind {
1577    pub arg1: Term,
1578    pub arg2: Term,
1579}
1580
1581#[derive(Debug, Clone, Opcode, Decode, Encode)]
1582#[opcode(174)]
1583pub struct RecvMarkerClear {
1584    pub arg1: Term,
1585}
1586
1587#[derive(Debug, Clone, Opcode, Decode, Encode)]
1588#[opcode(175)]
1589pub struct RecvMarkerReserve {
1590    pub arg1: Term,
1591}
1592
1593#[derive(Debug, Clone, Opcode, Decode, Encode)]
1594#[opcode(176)]
1595pub struct RecvMarkerUse {
1596    pub arg1: Term,
1597}
1598
1599#[derive(Debug, Clone, Opcode, Decode, Encode)]
1600#[opcode(177)]
1601pub struct BsCreateBin {
1602    pub arg1: Term,
1603    pub arg2: Term,
1604    pub arg3: Term,
1605    pub arg4: Term,
1606    pub arg5: Term,
1607    pub arg6: Term,
1608}
1609
1610#[derive(Debug, Clone, Opcode, Decode, Encode)]
1611#[opcode(178)]
1612pub struct CallFun2 {
1613    pub arg1: Term,
1614    pub arg2: Term,
1615    pub arg3: Term,
1616}
1617
1618#[derive(Debug, Clone, Opcode, Decode, Encode)]
1619#[opcode(179)]
1620pub struct NifStart {}
1621
1622#[derive(Debug, Clone, Opcode, Decode, Encode)]
1623#[opcode(180)]
1624pub struct Badrecord {
1625    pub arg1: Term,
1626}