Size: a a a

Compiler Development

2020 December 10

BD

Berkus Decker in Compiler Development
Victor Shamparov
Хм... Но не за счёт же call/ret.
https://developer.arm.com/documentation/dui0204/j/arm-and-thumb-instructions/branch-and-control-instructions/b--bl--bx--blx--and-bxj

BL
The BL and BLX instructions copy the address of the next instruction into lr (r14, the link register).

вместо рет - BX LR
если нужно вернуться из вложенной функции - PUSH {LR} / POP {LR}
http://www.engr.scu.edu/~dlewis/book3/worksheets/1-FunctionCallAndReturn.pdf
источник

h

hazer_hazer in Compiler Development
очень низкоуровнего... интересно
источник

а

а это кто in Compiler Development
hazer_hazer
На такое сейчас процы способны?!
просто мой максимум ассемблера это семестр работы с базовой ЭВМ в вузе)
Тебе нужно попрограммировать на настоящем ассемблере, это необходимый опыт когда компилируешь нативный язык : )
источник

h

hazer_hazer in Compiler Development
а это кто
Тебе нужно попрограммировать на настоящем ассемблере, это необходимый опыт когда компилируешь нативный язык : )
я не компилирую в машинный код. я пытаюсь обширнее понять машинный код для пользы в сфере вм
источник

h

hazer_hazer in Compiler Development
а это кто
Тебе нужно попрограммировать на настоящем ассемблере, это необходимый опыт когда компилируешь нативный язык : )
кстати. как там ОПД?
источник
2020 December 11

M

MrSmith in Compiler Development
А есть кто писал парсеры на Rust? На Lalr или другом гене реально за день парсер си сделать?
источник

BD

Berkus Decker in Compiler Development
MrSmith
А есть кто писал парсеры на Rust? На Lalr или другом гене реально за день парсер си сделать?
паскаль вполне
источник

M

MrSmith in Compiler Development
Требований никаких нет пусть даже на первой ошибке лапки поднимает
источник

M

MrSmith in Compiler Development
Berkus Decker
паскаль вполне
Си
источник

M

MrSmith in Compiler Development
Ну понятно дело хотя бы грубый А там тест сетами добью
источник

BD

Berkus Decker in Compiler Development
источник

M

MrSmith in Compiler Development
Отлично
источник

M

MrSmith in Compiler Development
Его и возьму
источник

M

MrSmith in Compiler Development
Надо уже с силами собраться и после компиля заслать пару pr, а то это бред что в 2020 я не могу прети принтинг, рефлекшен изменения и ещё пару вещей парсера и делать
источник

M

MrSmith in Compiler Development
Хотя вроде форки бизона могут
источник

PS

Pavel Samolysov in Compiler Development
В книгах по парсерам/лексерам, в той же книге дракона или programming language pragmatics много внимания уделяется восстановлению после сбоев/ошибок. Например, пропустить невнятный токен и пойти дальше. Но мне не понятно зачем так делать, если программист ошибся, то не опасно ли это додумывать за него, типа "ну тут какой-то мусор, пропустим его"? На ум приходит только цель посмотреть дальше, что есть в коде, чтобы сформировать толковое сообщение об ошибке, типа ты написал fe, может хотел fn или у тебя есть функция sum (объявленная ниже), а ты пишешь sub. Что вы думаете по поводу не как восстанавливаться после ошибок, а зачем?
источник

KR

K R in Compiler Development
Pavel Samolysov
В книгах по парсерам/лексерам, в той же книге дракона или programming language pragmatics много внимания уделяется восстановлению после сбоев/ошибок. Например, пропустить невнятный токен и пойти дальше. Но мне не понятно зачем так делать, если программист ошибся, то не опасно ли это додумывать за него, типа "ну тут какой-то мусор, пропустим его"? На ум приходит только цель посмотреть дальше, что есть в коде, чтобы сформировать толковое сообщение об ошибке, типа ты написал fe, может хотел fn или у тебя есть функция sum (объявленная ниже), а ты пишешь sub. Что вы думаете по поводу не как восстанавливаться после ошибок, а зачем?
Когда много однотипных ошибок. Или тормозной компилятор - ghc vs клин (в клине нет и не надо восстановления). Или миграция на новую несовместимую версию.
источник

YS

Yaroslav Schekin in Compiler Development
Pavel Samolysov
В книгах по парсерам/лексерам, в той же книге дракона или programming language pragmatics много внимания уделяется восстановлению после сбоев/ошибок. Например, пропустить невнятный токен и пойти дальше. Но мне не понятно зачем так делать, если программист ошибся, то не опасно ли это додумывать за него, типа "ну тут какой-то мусор, пропустим его"? На ум приходит только цель посмотреть дальше, что есть в коде, чтобы сформировать толковое сообщение об ошибке, типа ты написал fe, может хотел fn или у тебя есть функция sum (объявленная ниже), а ты пишешь sub. Что вы думаете по поводу не как восстанавливаться после ошибок, а зачем?
Или если парсер используется вообще не для компилятора (а, например, для linter-а или подсветки синтаксиса).
источник

PS

Pavel Samolysov in Compiler Development
Yaroslav Schekin
Или если парсер используется вообще не для компилятора (а, например, для linter-а или подсветки синтаксиса).
Да, вот это вот хорошая идея, не смогли подсветить, идём раскрашивать дальше. Спасибо.
источник

PS

Pavel Samolysov in Compiler Development
K R
Когда много однотипных ошибок. Или тормозной компилятор - ghc vs клин (в клине нет и не надо восстановления). Или миграция на новую несовместимую версию.
Не понял про тормозной компилятор, типа ему проще отрепортить все ошибки сразу, чтобы программист пофиксил и делал меньше циклов компиляции.
источник