parent
bc0a1d7b5b
commit
89af2c2654
@ -0,0 +1,67 @@
|
||||
#include <vmlifters.hpp>
|
||||
|
||||
namespace vm::lifters
|
||||
{
|
||||
vm::lifters::lifter_t nandq = {
|
||||
// pop vregX
|
||||
// pop vregY
|
||||
// not vregX
|
||||
// not vregY
|
||||
// and vregX, vregY
|
||||
// push vregX
|
||||
// pushf
|
||||
vm::handler::NANDQ, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
||||
auto [ t1, t2 ] = blk->tmp( 64, 64 );
|
||||
blk->pop( t1 );
|
||||
blk->pop( t2 );
|
||||
|
||||
blk->bnot( t1 );
|
||||
blk->bnot( t2 );
|
||||
|
||||
blk->band( t1, t2 );
|
||||
blk->push( t1 );
|
||||
blk->pushf();
|
||||
} };
|
||||
|
||||
vm::lifters::lifter_t nanddw = {
|
||||
// pop vregX
|
||||
// pop vregY
|
||||
// not vregX
|
||||
// not vregY
|
||||
// and vregX, vregY
|
||||
// push vregX
|
||||
// pushf
|
||||
vm::handler::NANDDW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
||||
auto [ t1, t2 ] = blk->tmp( 32, 32 );
|
||||
blk->pop( t1 );
|
||||
blk->pop( t2 );
|
||||
|
||||
blk->bnot( t1 );
|
||||
blk->bnot( t2 );
|
||||
|
||||
blk->band( t1, t2 );
|
||||
blk->push( t1 );
|
||||
blk->pushf();
|
||||
} };
|
||||
|
||||
vm::lifters::lifter_t nandw = {
|
||||
// pop vregX
|
||||
// pop vregY
|
||||
// not vregX
|
||||
// not vregY
|
||||
// and vregX, vregY
|
||||
// push vregX
|
||||
// pushf
|
||||
vm::handler::NANDW, []( vtil::basic_block *blk, vm::instrs::virt_instr_t *vinstr ) {
|
||||
auto [ t1, t2 ] = blk->tmp( 16, 16 );
|
||||
blk->pop( t1 );
|
||||
blk->pop( t2 );
|
||||
|
||||
blk->bnot( t1 );
|
||||
blk->bnot( t2 );
|
||||
|
||||
blk->band( t1, t2 );
|
||||
blk->push( t1 );
|
||||
blk->pushf();
|
||||
} };
|
||||
} // namespace vm::lifters
|
Loading…
Reference in new issue