anchor.diff:      Listing = format(Asm),
       io:format("~p~n", [Listing]).
   
  -format(Asm) ->
  -    Asm.
  +format(Asm) -> format(Asm, 0).
  +
  +format([Mnemonic | Rest], Address) ->
  +    Op = aeb_opcodes:m_to_op(Mnemonic),
  +    case (Op >= ?PUSH1) andalso (Op =< ?PUSH32) of
  +        true ->
  +            Arity = aeb_opcodes:op_size(Op) - 1,
  +            {Arg, Code} = get_arg(Arity, Rest),
  +            "        " ++ atom_to_list(Mnemonic)
  +                ++ "        " ++ Arg ++"\n" 
  +                ++ format(Code, Address + Arity + 1);
  +        false ->
  +            "        " ++ atom_to_list(Mnemonic)
  +                ++ format(Rest, Address + 1)
  +    end;
  +format([],_) -> [].
  +
  +%% TODO: Are args encoded as one list element or as a number of bytes...
  +get_arg(_, [Arg|Code]) ->
  +    {Arg, Code}.
   
   
   file(Filename, Options) ->
  
positive.code: %%%-------------------------------------------------------------------
  %%% @copyright (C) 2017, Aeternity Anstalt
  %%% @doc
  %%%     Assembler for aevm machine code
  %%% @end
  %%% Created : 21 Dec 2017
  %%%-------------------------------------------------------------------
  
negative.code: expand_args([OP | Rest]) ->
      [OP | expand_args(Rest)];
  expand_args([]) -> [].
  