|
|
@ -4,55 +4,64 @@ namespace vm::lifters
|
|
|
|
{
|
|
|
|
{
|
|
|
|
vm::lifters::lifter_t lconstq = {
|
|
|
|
vm::lifters::lifter_t lconstq = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTQ, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTQ,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
|
|
|
|
|
|
|
|
vm::lifters::lifter_t lconstdw = {
|
|
|
|
vm::lifters::lifter_t lconstdw = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTDW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTDW,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
|
|
|
|
|
|
|
|
vm::lifters::lifter_t lconstw = {
|
|
|
|
vm::lifters::lifter_t lconstw = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTW,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 16 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 16 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
|
|
|
|
|
|
|
|
vm::lifters::lifter_t lconstbzxw = {
|
|
|
|
vm::lifters::lifter_t lconstbzxw = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTBZXW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTBZXW,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 16 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 16 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
|
|
|
|
|
|
|
|
vm::lifters::lifter_t lconstbsxdw = {
|
|
|
|
vm::lifters::lifter_t lconstbsxdw = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTBSXDW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTBSXDW,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
|
|
|
|
|
|
|
|
vm::lifters::lifter_t lconstbsxq = {
|
|
|
|
vm::lifters::lifter_t lconstbsxq = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTBSXQ, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTBSXQ,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
|
|
|
|
|
|
|
|
vm::lifters::lifter_t lconstdwsxq = {
|
|
|
|
vm::lifters::lifter_t lconstdwsxq = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTDWSXQ, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTDWSXQ,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
|
|
|
|
|
|
|
|
vm::lifters::lifter_t lconstwsxq = {
|
|
|
|
vm::lifters::lifter_t lconstwsxq = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTWSXQ, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTWSXQ,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 64 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
|
|
|
|
|
|
|
|
vm::lifters::lifter_t lconstwsxdw = {
|
|
|
|
vm::lifters::lifter_t lconstwsxdw = {
|
|
|
|
// push imm<N>
|
|
|
|
// push imm<N>
|
|
|
|
vm::handler::LCONSTWSXDW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
|
|
|
vm::handler::LCONSTWSXDW,
|
|
|
|
|
|
|
|
[]( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr, vmp2::v3::code_block_t *code_blk ) {
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
|
|
|
|
blk->push( vtil::operand( vinstr->operand.imm.u, 32 ) );
|
|
|
|
} };
|
|
|
|
} };
|
|
|
|
} // namespace vm::lifters
|
|
|
|
} // namespace vm::lifters
|