Пример #1
0
void mexFunction( int nlhs, mxArray *plhs[],
                  int nrhs, const mxArray *prhs[] )
{
    ymx_debug_msg("Entering mexFunction\n");
    mexAtExit(ymx_persistent_cleanup);
    
    if (nrhs == 0) {
        command_help(nlhs, plhs, 0, NULL);
        return;
    }
    if (!mxIsChar(prhs[0]) || mxGetM(prhs[0]) != 1)
    {
        mexErrMsgTxt("First input must be a string.");
    }
    char *command = mxArrayToString(prhs[0]);
    if (strcmp(command, "load") == 0) {
        command_load(nlhs, plhs, nrhs-1, prhs+1);
    } else if (strcmp(command, "dump") == 0) {
        command_dump(nlhs, plhs, nrhs-1, prhs+1);
    } else if (strcmp(command, "help") == 0) {
        command_help(nlhs, plhs, nrhs-1, prhs+1);
    } else {
        command_help(nlhs, plhs, 0, NULL);
    }
    ymx_debug_msg("plhs: %d\n", plhs);
    ymx_debug_msg("plhs[0]: %d\n", plhs[0]);
    mxFree(command);
    ymx_debug_msg("Exiting mexFunction\n");
}
Пример #2
0
int ALU(int command, int operand)
{
    trace;
    if (command == 10) {
        return command_read(operand);
    } else if (command == 11) {
        return command_write(operand);
    } else if (command == 20) {
        return command_load(operand);
    } else if (command == 21) {
        return command_store(operand);
    } else if (command == 30) {
        return command_add(operand);
    } else if (command == 31) {
        return command_sub(operand);
    } else if (command == 32) {
        return command_divide(operand);
    } else if (command == 33) {
        return command_mul(operand);
    } else if (command == 40) {
        return command_jump(operand);
    } else if (command == 41) {
        return command_jneg(operand);
    } else if (command == 42) {
        return command_jz(operand);
    } else if (command == 43) {
        return command_halt();
    } else if (command == 51) {
        return command_not(operand);
    } else if (command == 52) {
        return command_and(operand);
    } else if (command == 53) {
        return command_or(operand);
    } else if (command == 54) {
        return command_xor(operand);
    } else if (command == 55) {
        return command_jns(operand);
    } else if (command == 56) {
        return command_jc(operand);
    } else if (command == 57) {
        return command_jnc(operand);
    } else if (command == 58) {
        return command_jp(operand);
    } else if (command == 59) {
        return command_jnp(operand);
    } else if (command == 60) {
        return command_chl(operand);
    } else if (command == 61) {
        return command_shr(operand);
    } else if (command == 62) {
        return command_rcl(operand);
    } else if (command == 63) {
        return command_rcr(operand);
    } else if (command == 64) {
        return command_neg(operand);
    } else if (command == 65 || command == 75) {
        return command_addc(operand);
    } else if (command == 66 || command == 76) {
        return command_subc(operand);
    } else if (command == 67) {
        return command_loglc(operand);
    } else if (command == 68) {
        return command_logrc(operand);
    } else if (command == 69) {
        return command_rccl(operand);
    } else if (command == 70) {
        return command_rccr(operand);
    } else if (command == 71) {
        return command_mova(operand);
    } else if (command == 72) {
        return command_movr(operand);
    } else if (command == 73) {
        return command_movca(operand);
    } else if (command == 74) {
        return command_movcr(operand);
    }

    sc_regSet(COMMAND_ERROR, 1);
    return -1;
}