vm implementation, added PUSH function