概要
paiza.ioでelixirやってみた。
練習問題、やってみた。
実装編
練習問題
RP2040のpioasmのディスアセンブラを書け。
投入するコード
E001
E000
期待する結果
set pins 1
set pins 0
サンプルコード
setを実装
defmodule Dasm do
def dt(v) do
cond do
v == 0 ->
IO.write("pins ")
v == 1 ->
IO.write("x ")
v == 2 ->
IO.write("y ")
v == 4 ->
IO.write("pindirs ")
true ->
IO.write("non ")
end
end
def da(v) do
IO.write(v)
IO.write(" ")
end
def ds(v) do
if v == 0 do
IO.puts("")
else
IO.puts("[#{v}]")
end
end
def decode(<<>>) do
end
def decode(<<0::3, a::13 >>) do
IO.puts("ok0")
end
def decode(<<1::3, a::13 >>) do
IO.puts("ok1")
end
def decode(<<2::3, a::13 >>) do
IO.puts("ok2")
end
def decode(<<3::3, a::13 >>) do
IO.puts("ok3")
end
def decode(<<4::3, a::13 >>) do
IO.puts("ok4")
end
def decode(<<5::3, a::13 >>) do
IO.puts("ok5")
end
def decode(<<6::3, a::13 >>) do
IO.puts("ok6")
end
def decode(<<7::3, ds::5, dt::3, da::5>>) do
IO.write("set ")
dt(dt)
da(da)
ds(ds)
end
end
a = Base.decode16!("E001")
Dasm.decode(a)
a = Base.decode16!("E000")
Dasm.decode(a)
成果物
以上。