Example #1
0
/* create memp */
F_RET memp_create
(
    Memp      *pps_memp,
    T_UINT32   ul_init_size,
    T_UINT32   ul_grow_size
)
{
    Memp_p  *ps_mempp = T_NULL;
    Mem_hdr *ps_hdr   = T_NULL;
    PN_RET(pps_memp, MEMP_NULL_PTR);

    ps_mempp = (Memp_p*)malloc(sizeof(*ps_mempp));
    PN_RET(ps_mempp, MEMP_NULL_PTR);
    F_ZERO(ps_mempp, sizeof(*ps_mempp));
    ps_mempp->ul_grow_size = ul_grow_size;
    ps_mempp->ul_size = 0;
    ps_mempp->ul_magic = MEMP_MAGIC;
    ps_mempp->pc_mem_addr = (Mem_hdr*)malloc(sizeof(Mem_hdr) + ul_init_size);
    PN_RET(ps_mempp->pc_mem_addr, MEMP_NULL_PTR);
    F_ZERO(ps_mempp->pc_mem_addr, sizeof(Mem_hdr));
    ps_hdr = (Mem_hdr*)(ps_mempp->pc_mem_addr);
    ps_hdr->pc_next_hdr = T_NULL; /* have no next mem_hdr */
    ps_hdr->ul_size = ul_init_size;
    ps_hdr->ul_left = ul_init_size;
    ps_hdr->pc_curr = (T_CHAR*)ps_hdr + sizeof(Mem_hdr);
    *pps_memp = (Memp)ps_mempp;
    return F_SUCCESS;
}
Example #2
0
Temp_map F_TempMap() {
  static Temp_map m = NULL;

  if (!m) {
    m = Temp_empty();
    Temp_enter(m, F_FP(), "fp");
    Temp_enter(m, F_SP(), "sp");
    Temp_enter(m, F_RV(), "rv");
    Temp_enter(m, F_ZERO(), "zf");

    Temp_tempList args = F_ARGS();
    Temp_tempList callee = F_CALLEE();
    Temp_tempList caller = F_CALLER();
    string buf[10];
    for (int i=0; args; args = args->tail, i++) {
      sprintf(buf, "args%d", i);
      Temp_enter(m, args, "");
    }

    for (int i=0; callee; callee = callee->tail, i++) {
      sprintf(buf, "callee%d", i);
      Temp_enter(m, args, "");
    }

    for (int i=0; caller; caller = caller->tail, i++) {
      sprintf(buf, "caller%d", i);
      Temp_enter(m, args, "");
    }
  }

  return Temp_layerMap(m, Temp_name());
}
Example #3
0
/* alloc another mem_hdr to alloc memory */
F_RET memp_alloc_another
(
    Memp    ps_memp_in
)
{
    Memp_p  *ps_memp  = T_NULL;
    Mem_hdr *ps_hdr   = T_NULL;
    T_UINT32 ul_grow_size = 0;

    PN_RET(ps_memp_in, MEMP_NULL_PTR);

    ps_memp = (Memp_p*)ps_memp_in;

    ul_grow_size = ps_memp->ul_grow_size;
    ps_hdr = (Mem_hdr*)malloc(ul_grow_size);
    PN_RET(ps_hdr, MEMP_NULL_PTR);
    F_ZERO(ps_hdr, sizeof(Mem_hdr));

    ps_hdr->pc_next_hdr = ps_memp->pc_mem_addr; /* change to original mem_hdr */
    ps_hdr->ul_size = ul_grow_size;
    ps_hdr->ul_left = ul_grow_size;
    ps_hdr->pc_curr = (T_CHAR*)ps_hdr + sizeof(Mem_hdr);
    ps_memp->pc_mem_addr = ps_hdr; /* refresh memp pointer */
    return F_SUCCESS;
}
Example #4
0
AS_instrList F_procEntryExit2(AS_instrList body) {
  static Temp_tempList returnSink = NULL;
  if (returnSink) returnSink = Temp_TempList(
    F_ZERO(), Temp_TempList(
    F_RA(), Temp_TempList(
    F_SP(), 
    F_CALLEE())));
  return AS_splice(body, AS_IOnstrList(
    AS_Oper("", NULL, returnSink, NULL), NULL));
}