c_cpp 基于样本的图灵虚拟机c

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 基于样本的图灵虚拟机c相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>

/* prototype for vm
 */

#define MAX_STACK 1000

#define SIZE_OF_SIZE_T (sizeof(size_t) * CHAR_BIT)

struct vm_inst_t
{
  size_t stack[MAX_STACK];
  int cur_call;
};

struct vm_inst_t*
vm_inst_create(void)
{
  struct vm_inst_t* vm = malloc(sizeof(struct vm_inst_t));
  memset(vm, 0, sizeof(struct vm_inst_t));
  vm->cur_call = -1; // Starts with no calls
  return vm;
}

static inline size_t
vm_inst_space(struct vm_inst_t* vm)
{
  return MAX_STACK - vm->cur_call - 1;
}

static inline size_t
vm_inst_call_count(struct vm_inst_t* vm)
{
  return vm->cur_call + 1;
}

static inline void
vm_inst_add_call(struct vm_inst_t* vm, size_t value)
{
  vm->stack[++(vm->cur_call)] = value;
}

static inline size_t
vm_inst_rem_call(struct vm_inst_t* vm)
{
  return vm->stack[vm->cur_call--];
}


int main(void) {
  int a = 3;
  void* b = &a;
  // Casts everything to a size_t 
  size_t c = (size_t)b;
  printf("a is %d, b is %p, c is %lu\n",a, b, c);
  return 0;
}

以上是关于c_cpp 基于样本的图灵虚拟机c的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 简单的寄存器虚拟机实现

c_cpp C ++ TMP图灵机

基于unicorn-engine的虚拟机的实现(WxSpectre)

TritonVM——基于Recursive STARK的虚拟机

区块链 虚拟机 比特币的脚本解释器evmwasm 是什么 区别

c_cpp dlib图样本