
LEA、Load Effective Addressは孤高な命令と思いきや、メモリアクセスする命令共には裏で気脈を通じているみたい。そしてメモリアクセスするかのごときアセンブリ言語表記だけれども、決してメモリにアクセスすることなくレジスタ操作を行うだけの命令。必須なこともあれば、避けて通ることもできる?なんだそれ。
デバイス作る人>>デバイス使う人>>デバイスおたく
前回はイネーブルになっているデュアル・コアはそれぞれArmなんだかRISC-Vなんだかハッキリしろい、ということでステータスレジスタを読み出して確認しました。しかし、2コアの片方しか動かしてなかったです。今回は超簡単な実験スクリプトで2コアの両方が動いているところを確認したいと思います。手抜きだけれども。
前回RISC-Vモード用のMicroPythonをラズパイPico2にインストール。しかしRISC-Vだろうが、ArmだろうがMicroPythonなので見た目は変りませぬ。処理系自体はRISC-Vで走っていると表示してます。しかし疑り深いので、今回は本当にRISC-Vで走っているのだよね、と確認してみたいと思います。
“Pico三昧(52) ラズパイPico2:RP2350、MicroPythonでコア確認” の続きを読む
前回まで文書ばかり読んでいたので実機をいじりたくムズムズ。たまたまMicroPythonのサイトみたらば、以前試用させていただいたときにはまだPreview版だったPico2用のバイナリがReleasesになってました。それどころか以前不在だったRISC-Vモード用もリリースになってました。これは使ってみるしかない!
“Pico三昧(51) ラズパイPico2:RP2350、MicroPythonでRISC-V” の続きを読む
前回はブロック転送命令にまつわるコマケー話。今回はPUSH/POP命令にまつわるコマケー話です。x86の場合スタックへのデータの退避や復帰にはPUSH、POP命令を使います。PUSH、POP自体は分かり易い命令であるのでコマケー話など無い感じ。しかし、歴史を知らないと何でそんな命令があるの?という御供の命令もあり。
“ぐだぐだ低レベルプログラミング(192)x86(16bit)、PUSH/POPにも先祖の痕跡” の続きを読む
前回、DIレジスタをベースに使うメモリアクセスではDSがデフォルトになる件練習。しかしDIレジスタは一部命令でESと「不可分に結びついている」のです。x86式には「ストリング転送命令」、一般には「ブロック転送命令」においてです。今回はその代表 MOVS 命令について見ていきたいと思います。コマケー話の宝庫なのよ。
“ぐだぐだ低レベルプログラミング(191)x86(16bit)、MOVS、所謂ブロック転送命令” の続きを読む