LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Я может чего не понимаю, но в моём понимании (а я делал компилятор схемы, про форт, правда, только на лоре читал) схема это совсем непростой язык и уж точно не отображающийся тривиально в какой-либо набор инструкций. Ну или схемой называют не то, что я понимают под схемой. Я проглядел этот sassy - это просто тот же ассемблер, который в s-выражения засунули, там нет ничего высокоуровневого. Хотя, наверное, ничего не мешает навертеть это на основе макросов или каких-то функций, надо обмозговать это. Но всё же в моём понимании это что-то жаваскрипто-подобное (в плане синтаксиса), с прямым управлением регистрами. Что-то вроде (писал не слишком вдумываясь, сорри за ошибки)

function f(signed r0, signed r1, unsigned r2) {
    r3 = r0 + r1;
    unsigned r3;
    if (r3 < r2) {
        return r3;
    }
    signed r3;
    return r3 * r0;
}

Т.е. каждая конструкция тривиально преобразовывается в соответствующий машинный код, а также используется опциональная типизация (на уровне signed/unsigned) для выбора правильных инструкций там, где это необходимо.

Исходная версия Legioner, :

Я может чего не понимаю, но в моём понимании (а я делал компилятор схемы, про форт, правда, только на лоре читал) схема это совсем непростой язык и уж точно не отображающийся тривиально в какой-либо набор инструкций. Ну или схемой называют не то, что я понимают под схемой. Я проглядел этот sassy - это просто тот же ассемблер, который в s-выражения засунули, там нет ничего высокоуровневого. Хотя, наверное, ничего не мешает навертеть это на основе макросов или каких-то функций, надо обмозговать это. Но всё же в моём понимании это что-то жаваскрипто-подобное (в плане синтаксиса), с прямым управлением регистрами. Что-то вроде (писал не слишком вдумываясь, сорри за ошибки)

function f(signed r0, signed r1, unsigned r2) {
    r3 = r0 + r1;
    unsigned r3;
    unless (r3 < r2) {
        return r3;
    }
    signed r3;
    return r3 * r0;
}

Т.е. каждая конструкция тривиально преобразовывается в соответствующий машинный код, а также используется опциональная типизация (на уровне signed/unsigned) для выбора правильных инструкций там, где это необходимо.