Как я могу моделировать макросы в JavaScript?

19
задан Havvy 11 January 2014 в 13:31
поделиться

4 ответа

Вы могли использовать parenscript. Это даст Вам макросы для JavaScript.

24
ответ дан 30 November 2019 в 02:06
поделиться

JavaScript интерпретируется. Оценка не является больше дорогостоящей что что-либо еще в JavaScript.

-1
ответ дан 30 November 2019 в 02:06
поделиться

Я написал эмулятор gameboy на javascript и моделирую макросы для эмуляции процессора следующим образом:

код макроса (функция возвращает строку с кодом макроса):

function CPU_CP_A(R,C) { // this function simulates the CP instruction, 
  return ''+             // sets CPU flags and stores in CCC the number
  'FZ=(RA=='+R+');'+     // of cpu cycles needed
  'FN=1;'+
  'FC=RA<'+R+';'+
  'FH=(RA&0x0F)<('+R+'&0x0F);'+
  'ICC='+C+';';
}

Использование "макрос", поэтому код генерируется "на лету", и нам не нужно делать к нему вызовы функций или писать много повторяющегося кода для каждой операции ...

OP[0xB8]=new Function(CPU_CP_A('RB',4)); // CP B
OP[0xB9]=new Function(CPU_CP_A('RC',4)); // CP C
OP[0xBA]=new Function(CPU_CP_A('RD',4)); // CP D
OP[0xBB]=new Function(CPU_CP_A('RE',4)); // CP E
OP[0xBC]=new Function('T1=HL>>8;'+CPU_CP_A('T1',4)); // CP H
OP[0xBD]=new Function('T1=HL&0xFF;'+CPU_CP_A('T1',4)); // CP L
OP[0xBE]=new Function('T1=MEM[HL];'+CPU_CP_A('T1',8)); // CP (HL)
OP[0xBF]=new Function(CPU_CP_A('RA',4)); // CP A

Теперь мы можем выполнять эмулированный код, подобный этому :

OP[MEM[PC]](); // MEM is an array of bytes and PC the program counter

Надеюсь, это поможет ...

5
ответ дан 30 November 2019 в 02:06
поделиться
function unless(condition,body) {
    return 'if(! '+condition.toSource()+'() ) {' + body.toSource()+'(); }';
}


eval(unless( function() {
    return false;
  }, function() {
    alert("OK");
}));
3
ответ дан 30 November 2019 в 02:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: