ну я надеюсь, что я не нарушу правила для рассылки спама здесь. Я просто задал вопрос о том, как Эрл компилятор реализует поиск по шаблону, и я получил некоторые большие ответы, один из которых является скомпилированный байт-код (полученный с параметром, передаваемым в директиву с()):erlang BEAM bytecode
{function, match, 1, 2}.
{label,1}.
{func_info,{atom,match},{atom,match},1}.
{label,2}.
{test,is_tuple,{f,3},[{x,0}]}.
{test,test_arity,{f,3},[{x,0},2]}.
{get_tuple_element,{x,0},0,{x,1}}.
{test,is_eq_exact,{f,3},[{x,1},{atom,a}]}.
return.
{label,3}.
{badmatch,{x,0}}
все его простые эрланговые кортежи. Я ожидал какой-то загадочной бинарной вещи, не думаю. поэтому я спрашиваю об этом по импульсу здесь (я мог бы посмотреть на источник компилятора, но задавать вопросы всегда заканчивается лучше с дополнительным пониманием), как этот вывод выводится на двоичном уровне?
скажем {test,is_tuple,{f,3},[{x,0}]}
например. Я предполагаю, что это одна инструкция, называемая «тест» ... в любом случае, поэтому этот вывод будет по существу АСТ для языка уровня байткода, из которого двоичное кодирование является всего лишь 1-1 переводом? Это все так увлекательно, я понятия не имел, что я могу это легко увидеть, что компилятор erlang нарушает.
большое спасибо
+1, так как я тоже заинтересован и следовал из вашего предыдущего вопроса через Google :) –