Verification of programs using Code Segments and Data Segments

Yasutaka Higa

研究目的

研究内容

近況報告

DPP について

DPP in LLVM 3.7

変更点

before

typedef struct phils {
    int id;
    struct fork *right_fork;
    struct fork *left_fork;
    struct phils *right;
    struct phils *left;
    __code (*next)(struct phils *);
} Phils, *PhilsPtr;
goto list->phils->next(list->phils,list);

after

goto do_action(list->phils, list);
typedef struct phils {
    int id;
    struct fork *right_fork;
    struct fork *left_fork;
    struct phils *right;
    struct phils *left;
    enum Action next;
} Phils, *PhilsPtr;
enum Action {
    PutDownLeftFork,
    PutDownRightFork,
    /* ...... */
    PutDownFork
};
__code do_action(PhilsPtr phils, TaskPtr list)
{
    switch (phils->next) {
        case PutDownLeftFork:
            goto putdown_lfork(phils, list);
        case PutDownRightFork:
            goto putdown_rfork(phils, list);
        /* ....... */
        default:
            printf("invalid action\n");
            exit(1);
    }
    __code (*action) (PhilsPtr, TaskPtr) = thinking;
    goto action(phils, list);
}

DPP について

これから

sakura について

sakura についての案とか