MicrOS
opcodes.h File Reference
#include "../v8086.h"

Go to the source code of this file.

Macros

#define OPCODE_PROTO_NAME(name)   v8086_opcode_##name
 
#define OPCODE_PROTO(name)   int16_t OPCODE_PROTO_NAME(name)(v8086* machine, uint8_t opcode)
 
#define ASSIGN_NULL(i)   machine->operations[i] = NULL
 
#define ASSIGN_NULL_0FH(i)   machine->operations_0fh[i] = NULL
 
#define ASSIGN_OPCODE(i, name)   machine->operations[i] = OPCODE_PROTO_NAME(name)
 
#define ASSIGN_0FH_OPCODE(i, name)   machine->operations_0fh[i] = OPCODE_PROTO_NAME(name)
 
#define GROUP_OF_OPCODES(from, to, name)   for(uint8_t i = from; i <= to; i++) ASSIGN_OPCODE(i, name)
 
#define GROUP_OF_0FH_OPCODES(from, to, name)   for(uint8_t i = from; i <= to; i++) ASSIGN_0FH_OPCODE(i, name)
 

Functions

 OPCODE_PROTO (add)
 
 OPCODE_PROTO (push_es)
 
 OPCODE_PROTO (pop_es)
 
 OPCODE_PROTO (or)
 
 OPCODE_PROTO (push_cs)
 
 OPCODE_PROTO (adc)
 
 OPCODE_PROTO (push_ss)
 
 OPCODE_PROTO (pop_ss)
 
 OPCODE_PROTO (sbb)
 
 OPCODE_PROTO (push_ds)
 
 OPCODE_PROTO (pop_ds)
 
 OPCODE_PROTO (and)
 
 OPCODE_PROTO (daa)
 
 OPCODE_PROTO (sub)
 
 OPCODE_PROTO (das)
 
 OPCODE_PROTO (xor)
 
 OPCODE_PROTO (aaa)
 
 OPCODE_PROTO (cmp)
 
 OPCODE_PROTO (aas)
 
 OPCODE_PROTO (inc)
 
 OPCODE_PROTO (dec)
 
 OPCODE_PROTO (push_gpr)
 
 OPCODE_PROTO (pop_gpr)
 
 OPCODE_PROTO (jcc)
 
 OPCODE_PROTO (group1)
 
 OPCODE_PROTO (test)
 
 OPCODE_PROTO (xchg)
 
 OPCODE_PROTO (mov_rm)
 
 OPCODE_PROTO (mov_segment)
 
 OPCODE_PROTO (lea)
 
 OPCODE_PROTO (pop_rm)
 
 OPCODE_PROTO (xchg_ax)
 
 OPCODE_PROTO (cbw)
 
 OPCODE_PROTO (cwd)
 
 OPCODE_PROTO (far_call)
 
 OPCODE_PROTO (pushf)
 
 OPCODE_PROTO (popf)
 
 OPCODE_PROTO (sahf)
 
 OPCODE_PROTO (lahf)
 
 OPCODE_PROTO (mov_moffset)
 
 OPCODE_PROTO (movsb)
 
 OPCODE_PROTO (movsw)
 
 OPCODE_PROTO (cmpsb)
 
 OPCODE_PROTO (cmpsw)
 
 OPCODE_PROTO (test_imm)
 
 OPCODE_PROTO (stosb)
 
 OPCODE_PROTO (stosw)
 
 OPCODE_PROTO (lodsb)
 
 OPCODE_PROTO (lodsw)
 
 OPCODE_PROTO (scasb)
 
 OPCODE_PROTO (scasw)
 
 OPCODE_PROTO (mov_gpr_imm)
 
 OPCODE_PROTO (retn)
 
 OPCODE_PROTO (retn_imm)
 
 OPCODE_PROTO (les)
 
 OPCODE_PROTO (lds)
 
 OPCODE_PROTO (mov_rm_imm)
 
 OPCODE_PROTO (retf_imm)
 
 OPCODE_PROTO (retf)
 
 OPCODE_PROTO (interrupt)
 
 OPCODE_PROTO (iret)
 
 OPCODE_PROTO (group_2)
 
 OPCODE_PROTO (aam)
 
 OPCODE_PROTO (aad)
 
 OPCODE_PROTO (xlat)
 
 OPCODE_PROTO (loop)
 
 OPCODE_PROTO (jrcxz)
 
 OPCODE_PROTO (inb_imm)
 
 OPCODE_PROTO (inw_imm)
 
 OPCODE_PROTO (outb_imm)
 
 OPCODE_PROTO (outw_imm)
 
 OPCODE_PROTO (call_near)
 
 OPCODE_PROTO (jmp_near)
 
 OPCODE_PROTO (jmp_far)
 
 OPCODE_PROTO (jmp_short)
 
 OPCODE_PROTO (inb_dx)
 
 OPCODE_PROTO (inw_dx)
 
 OPCODE_PROTO (outb_dx)
 
 OPCODE_PROTO (outw_dx)
 
 OPCODE_PROTO (set_flag)
 
 OPCODE_PROTO (group_3)
 
 OPCODE_PROTO (group_4)
 
 OPCODE_PROTO (group_5)
 
 OPCODE_PROTO (push_all)
 
 OPCODE_PROTO (pop_all)
 
 OPCODE_PROTO (bound)
 
 OPCODE_PROTO (push_imm16_32)
 
 OPCODE_PROTO (push_imm8)
 
 OPCODE_PROTO (imul_reg_reg_imm)
 
 OPCODE_PROTO (imul_reg_reg_imm8)
 
 OPCODE_PROTO (ins8)
 
 OPCODE_PROTO (ins)
 
 OPCODE_PROTO (outs8)
 
 OPCODE_PROTO (outs)
 
 OPCODE_PROTO (enter)
 
 OPCODE_PROTO (leave)
 
 OPCODE_PROTO (two_byte_0fh)
 
 OPCODE_PROTO (jcc_l)
 
 OPCODE_PROTO (setcc)
 
 OPCODE_PROTO (push_fs)
 
 OPCODE_PROTO (pop_fs)
 
 OPCODE_PROTO (push_gs)
 
 OPCODE_PROTO (pop_gs)
 
 OPCODE_PROTO (bt)
 
 OPCODE_PROTO (bts)
 
 OPCODE_PROTO (btr)
 
 OPCODE_PROTO (btc)
 
 OPCODE_PROTO (group_8)
 
 OPCODE_PROTO (shld_imm)
 
 OPCODE_PROTO (shld_cl)
 
 OPCODE_PROTO (shrd_imm)
 
 OPCODE_PROTO (shrd_cl)
 
 OPCODE_PROTO (imul_2_byte)
 
 OPCODE_PROTO (lss)
 
 OPCODE_PROTO (lfs)
 
 OPCODE_PROTO (lgs)
 
 OPCODE_PROTO (movzx)
 
 OPCODE_PROTO (movsx)
 
 OPCODE_PROTO (bsf)
 
 OPCODE_PROTO (bsr)
 
 OPCODE_PROTO (prefix_cs)
 
 OPCODE_PROTO (prefix_ds)
 
 OPCODE_PROTO (prefix_es)
 
 OPCODE_PROTO (prefix_fs)
 
 OPCODE_PROTO (prefix_gs)
 
 OPCODE_PROTO (prefix_ss)
 
 OPCODE_PROTO (prefix_address_32)
 
 OPCODE_PROTO (prefix_operand_32)
 
 OPCODE_PROTO (prefix_repne)
 
 OPCODE_PROTO (prefix_rep_repe)
 
 OPCODE_PROTO (prefix_lock)
 

Macro Definition Documentation

◆ ASSIGN_0FH_OPCODE

#define ASSIGN_0FH_OPCODE (   i,
  name 
)    machine->operations_0fh[i] = OPCODE_PROTO_NAME(name)

◆ ASSIGN_NULL

#define ASSIGN_NULL (   i)    machine->operations[i] = NULL

◆ ASSIGN_NULL_0FH

#define ASSIGN_NULL_0FH (   i)    machine->operations_0fh[i] = NULL

◆ ASSIGN_OPCODE

#define ASSIGN_OPCODE (   i,
  name 
)    machine->operations[i] = OPCODE_PROTO_NAME(name)

◆ GROUP_OF_0FH_OPCODES

#define GROUP_OF_0FH_OPCODES (   from,
  to,
  name 
)    for(uint8_t i = from; i <= to; i++) ASSIGN_0FH_OPCODE(i, name)

◆ GROUP_OF_OPCODES

#define GROUP_OF_OPCODES (   from,
  to,
  name 
)    for(uint8_t i = from; i <= to; i++) ASSIGN_OPCODE(i, name)

◆ OPCODE_PROTO

#define OPCODE_PROTO (   name)    int16_t OPCODE_PROTO_NAME(name)(v8086* machine, uint8_t opcode)

◆ OPCODE_PROTO_NAME

#define OPCODE_PROTO_NAME (   name)    v8086_opcode_##name

Function Documentation

◆ OPCODE_PROTO() [1/131]

OPCODE_PROTO ( add  )

◆ OPCODE_PROTO() [2/131]

OPCODE_PROTO ( push_es  )

◆ OPCODE_PROTO() [3/131]

OPCODE_PROTO ( pop_es  )

◆ OPCODE_PROTO() [4/131]

OPCODE_PROTO ( or  )

◆ OPCODE_PROTO() [5/131]

OPCODE_PROTO ( push_cs  )

◆ OPCODE_PROTO() [6/131]

OPCODE_PROTO ( adc  )

◆ OPCODE_PROTO() [7/131]

OPCODE_PROTO ( push_ss  )

◆ OPCODE_PROTO() [8/131]

OPCODE_PROTO ( pop_ss  )

◆ OPCODE_PROTO() [9/131]

OPCODE_PROTO ( sbb  )

◆ OPCODE_PROTO() [10/131]

OPCODE_PROTO ( push_ds  )

◆ OPCODE_PROTO() [11/131]

OPCODE_PROTO ( pop_ds  )

◆ OPCODE_PROTO() [12/131]

OPCODE_PROTO ( and  )

◆ OPCODE_PROTO() [13/131]

OPCODE_PROTO ( daa  )

◆ OPCODE_PROTO() [14/131]

OPCODE_PROTO ( sub  )

◆ OPCODE_PROTO() [15/131]

OPCODE_PROTO ( das  )

◆ OPCODE_PROTO() [16/131]

OPCODE_PROTO ( xor  )

◆ OPCODE_PROTO() [17/131]

OPCODE_PROTO ( aaa  )

◆ OPCODE_PROTO() [18/131]

OPCODE_PROTO ( cmp  )

◆ OPCODE_PROTO() [19/131]

OPCODE_PROTO ( aas  )

◆ OPCODE_PROTO() [20/131]

OPCODE_PROTO ( inc  )

◆ OPCODE_PROTO() [21/131]

OPCODE_PROTO ( dec  )

◆ OPCODE_PROTO() [22/131]

OPCODE_PROTO ( push_gpr  )

◆ OPCODE_PROTO() [23/131]

OPCODE_PROTO ( pop_gpr  )

◆ OPCODE_PROTO() [24/131]

OPCODE_PROTO ( jcc  )

◆ OPCODE_PROTO() [25/131]

OPCODE_PROTO ( group1  )

◆ OPCODE_PROTO() [26/131]

OPCODE_PROTO ( test  )

◆ OPCODE_PROTO() [27/131]

OPCODE_PROTO ( xchg  )

◆ OPCODE_PROTO() [28/131]

OPCODE_PROTO ( mov_rm  )

◆ OPCODE_PROTO() [29/131]

OPCODE_PROTO ( mov_segment  )

◆ OPCODE_PROTO() [30/131]

OPCODE_PROTO ( lea  )

◆ OPCODE_PROTO() [31/131]

OPCODE_PROTO ( pop_rm  )

◆ OPCODE_PROTO() [32/131]

OPCODE_PROTO ( xchg_ax  )

◆ OPCODE_PROTO() [33/131]

OPCODE_PROTO ( cbw  )

◆ OPCODE_PROTO() [34/131]

OPCODE_PROTO ( cwd  )

◆ OPCODE_PROTO() [35/131]

OPCODE_PROTO ( far_call  )

◆ OPCODE_PROTO() [36/131]

OPCODE_PROTO ( pushf  )

◆ OPCODE_PROTO() [37/131]

OPCODE_PROTO ( popf  )

◆ OPCODE_PROTO() [38/131]

OPCODE_PROTO ( sahf  )

◆ OPCODE_PROTO() [39/131]

OPCODE_PROTO ( lahf  )

◆ OPCODE_PROTO() [40/131]

OPCODE_PROTO ( mov_moffset  )

◆ OPCODE_PROTO() [41/131]

OPCODE_PROTO ( movsb  )

◆ OPCODE_PROTO() [42/131]

OPCODE_PROTO ( movsw  )

◆ OPCODE_PROTO() [43/131]

OPCODE_PROTO ( cmpsb  )

◆ OPCODE_PROTO() [44/131]

OPCODE_PROTO ( cmpsw  )

◆ OPCODE_PROTO() [45/131]

OPCODE_PROTO ( test_imm  )

◆ OPCODE_PROTO() [46/131]

OPCODE_PROTO ( stosb  )

◆ OPCODE_PROTO() [47/131]

OPCODE_PROTO ( stosw  )

◆ OPCODE_PROTO() [48/131]

OPCODE_PROTO ( lodsb  )

◆ OPCODE_PROTO() [49/131]

OPCODE_PROTO ( lodsw  )

◆ OPCODE_PROTO() [50/131]

OPCODE_PROTO ( scasb  )

◆ OPCODE_PROTO() [51/131]

OPCODE_PROTO ( scasw  )

◆ OPCODE_PROTO() [52/131]

OPCODE_PROTO ( mov_gpr_imm  )

◆ OPCODE_PROTO() [53/131]

OPCODE_PROTO ( retn  )

◆ OPCODE_PROTO() [54/131]

OPCODE_PROTO ( retn_imm  )

◆ OPCODE_PROTO() [55/131]

OPCODE_PROTO ( les  )

◆ OPCODE_PROTO() [56/131]

OPCODE_PROTO ( lds  )

◆ OPCODE_PROTO() [57/131]

OPCODE_PROTO ( mov_rm_imm  )

◆ OPCODE_PROTO() [58/131]

OPCODE_PROTO ( retf_imm  )

◆ OPCODE_PROTO() [59/131]

OPCODE_PROTO ( retf  )

◆ OPCODE_PROTO() [60/131]

OPCODE_PROTO ( interrupt  )

◆ OPCODE_PROTO() [61/131]

OPCODE_PROTO ( iret  )

◆ OPCODE_PROTO() [62/131]

OPCODE_PROTO ( group_2  )

◆ OPCODE_PROTO() [63/131]

OPCODE_PROTO ( aam  )

◆ OPCODE_PROTO() [64/131]

OPCODE_PROTO ( aad  )

◆ OPCODE_PROTO() [65/131]

OPCODE_PROTO ( xlat  )

◆ OPCODE_PROTO() [66/131]

OPCODE_PROTO ( loop  )

◆ OPCODE_PROTO() [67/131]

OPCODE_PROTO ( jrcxz  )

◆ OPCODE_PROTO() [68/131]

OPCODE_PROTO ( inb_imm  )

◆ OPCODE_PROTO() [69/131]

OPCODE_PROTO ( inw_imm  )

◆ OPCODE_PROTO() [70/131]

OPCODE_PROTO ( outb_imm  )

◆ OPCODE_PROTO() [71/131]

OPCODE_PROTO ( outw_imm  )

◆ OPCODE_PROTO() [72/131]

OPCODE_PROTO ( call_near  )

◆ OPCODE_PROTO() [73/131]

OPCODE_PROTO ( jmp_near  )

◆ OPCODE_PROTO() [74/131]

OPCODE_PROTO ( jmp_far  )

◆ OPCODE_PROTO() [75/131]

OPCODE_PROTO ( jmp_short  )

◆ OPCODE_PROTO() [76/131]

OPCODE_PROTO ( inb_dx  )

◆ OPCODE_PROTO() [77/131]

OPCODE_PROTO ( inw_dx  )

◆ OPCODE_PROTO() [78/131]

OPCODE_PROTO ( outb_dx  )

◆ OPCODE_PROTO() [79/131]

OPCODE_PROTO ( outw_dx  )

◆ OPCODE_PROTO() [80/131]

OPCODE_PROTO ( set_flag  )

◆ OPCODE_PROTO() [81/131]

OPCODE_PROTO ( group_3  )

◆ OPCODE_PROTO() [82/131]

OPCODE_PROTO ( group_4  )

◆ OPCODE_PROTO() [83/131]

OPCODE_PROTO ( group_5  )

◆ OPCODE_PROTO() [84/131]

OPCODE_PROTO ( push_all  )

◆ OPCODE_PROTO() [85/131]

OPCODE_PROTO ( pop_all  )

◆ OPCODE_PROTO() [86/131]

OPCODE_PROTO ( bound  )

◆ OPCODE_PROTO() [87/131]

OPCODE_PROTO ( push_imm16_32  )

◆ OPCODE_PROTO() [88/131]

OPCODE_PROTO ( push_imm8  )

◆ OPCODE_PROTO() [89/131]

OPCODE_PROTO ( imul_reg_reg_imm  )

◆ OPCODE_PROTO() [90/131]

OPCODE_PROTO ( imul_reg_reg_imm8  )

◆ OPCODE_PROTO() [91/131]

OPCODE_PROTO ( ins8  )

◆ OPCODE_PROTO() [92/131]

OPCODE_PROTO ( ins  )

◆ OPCODE_PROTO() [93/131]

OPCODE_PROTO ( outs8  )

◆ OPCODE_PROTO() [94/131]

OPCODE_PROTO ( outs  )

◆ OPCODE_PROTO() [95/131]

OPCODE_PROTO ( enter  )

◆ OPCODE_PROTO() [96/131]

OPCODE_PROTO ( leave  )

◆ OPCODE_PROTO() [97/131]

OPCODE_PROTO ( two_byte_0fh  )

◆ OPCODE_PROTO() [98/131]

OPCODE_PROTO ( jcc_l  )

◆ OPCODE_PROTO() [99/131]

OPCODE_PROTO ( setcc  )

◆ OPCODE_PROTO() [100/131]

OPCODE_PROTO ( push_fs  )

◆ OPCODE_PROTO() [101/131]

OPCODE_PROTO ( pop_fs  )

◆ OPCODE_PROTO() [102/131]

OPCODE_PROTO ( push_gs  )

◆ OPCODE_PROTO() [103/131]

OPCODE_PROTO ( pop_gs  )

◆ OPCODE_PROTO() [104/131]

OPCODE_PROTO ( bt  )

◆ OPCODE_PROTO() [105/131]

OPCODE_PROTO ( bts  )

◆ OPCODE_PROTO() [106/131]

OPCODE_PROTO ( btr  )

◆ OPCODE_PROTO() [107/131]

OPCODE_PROTO ( btc  )

◆ OPCODE_PROTO() [108/131]

OPCODE_PROTO ( group_8  )

◆ OPCODE_PROTO() [109/131]

OPCODE_PROTO ( shld_imm  )

◆ OPCODE_PROTO() [110/131]

OPCODE_PROTO ( shld_cl  )

◆ OPCODE_PROTO() [111/131]

OPCODE_PROTO ( shrd_imm  )

◆ OPCODE_PROTO() [112/131]

OPCODE_PROTO ( shrd_cl  )

◆ OPCODE_PROTO() [113/131]

OPCODE_PROTO ( imul_2_byte  )

◆ OPCODE_PROTO() [114/131]

OPCODE_PROTO ( lss  )

◆ OPCODE_PROTO() [115/131]

OPCODE_PROTO ( lfs  )

◆ OPCODE_PROTO() [116/131]

OPCODE_PROTO ( lgs  )

◆ OPCODE_PROTO() [117/131]

OPCODE_PROTO ( movzx  )

◆ OPCODE_PROTO() [118/131]

OPCODE_PROTO ( movsx  )

◆ OPCODE_PROTO() [119/131]

OPCODE_PROTO ( bsf  )

◆ OPCODE_PROTO() [120/131]

OPCODE_PROTO ( bsr  )

◆ OPCODE_PROTO() [121/131]

OPCODE_PROTO ( prefix_cs  )

◆ OPCODE_PROTO() [122/131]

OPCODE_PROTO ( prefix_ds  )

◆ OPCODE_PROTO() [123/131]

OPCODE_PROTO ( prefix_es  )

◆ OPCODE_PROTO() [124/131]

OPCODE_PROTO ( prefix_fs  )

◆ OPCODE_PROTO() [125/131]

OPCODE_PROTO ( prefix_gs  )

◆ OPCODE_PROTO() [126/131]

OPCODE_PROTO ( prefix_ss  )

◆ OPCODE_PROTO() [127/131]

OPCODE_PROTO ( prefix_address_32  )

◆ OPCODE_PROTO() [128/131]

OPCODE_PROTO ( prefix_operand_32  )

◆ OPCODE_PROTO() [129/131]

OPCODE_PROTO ( prefix_repne  )

◆ OPCODE_PROTO() [130/131]

OPCODE_PROTO ( prefix_rep_repe  )

◆ OPCODE_PROTO() [131/131]

OPCODE_PROTO ( prefix_lock  )