LoginSignup
0
0

More than 3 years have passed since last update.

vistaでquartus その44

Last updated at Posted at 2020-10-12

概要

vistaでquartusやってみた。
cpuを書いてみた。
機械語モニタを作る。トリック編。

俺cpuには、間接アドレッシングが無い。

メモリー関係の命令は、setとgetで、直接アドレシングでオペコードに、アドレスを埋め込んでいる。
0x2000 + アドレスがset
0x3000 + アドレスがget
setは、メモリーに、スタックトップを書き込む命令
getは、メモリーから、スタックトップへ読み込む命令
機械語モニタは、メモリーに書いたり、読む、コマンドがある。

トリック

オペコードを生成してメモリーに書き込み、そこへジャンプ。

メモリー読み込み

0x100から、読み取る場合

push  0x100
get  a
+
set  b
jmp  b

a:
  0x2000
b:
  0x0000
c:
  0x5000

スタックに、0x100を積む。
アドレスaから、0x2000をスタックに積む。
0x2000 + 0x100を実行。
アドレスbに書き込む
アドレスbに、ジャンプ。
アドレス0x100から、読み取る。

メモリー書き込み

0x100に0xffffを、書き込む場合

push  0x100
get  d
+
set  f
get  e
jmp  f

d:
  0x3000
e:
  0xffff
f:
  0x0000
g:
  0x5000

アドレスeに、0xffffを入れておく。
スタックに、0x100を積む。
アドレスdから、0x3000をスタックに積む。
0x3000 + 0x100を実行。
アドレスfに書き込む
アドレスeから、読み込む
アドレスfに、ジャンプ
アドレス0x100に、書き込む。

アドレス0x100に、ジャンプ

push  0x100
get  j
+
set  k
jmp  k
j:
  0x5000
k:
  0x0000

スタックに、0x100を積む。
アドレスjから、0x5000をスタックに積む。
0x5000 + 0x100を実行。
アドレスkに書き込む
アドレスkに、ジャンプ
アドレス0x100に、ジャンプ

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0