ぐだぐだ低レベルプログラミング(70) ARM64(AArch64)、論理命令AND一族#2

AndTable2
Joseph Halfmoon

前回に続き、A64の論理演算命令群、AND一族の2回目です。今回は演算結果をフラグに反映する「S」のついた命令どもをエクササイズしてみます。またands命令の「エイリアス」、tst命令についてもそのコード生成確認とともに練習してみます。Arm64ビットのクセに慣れればこれはこれでらくちん。

“ぐだぐだ低レベルプログラミング(70) ARM64(AArch64)、論理命令AND一族#2” の続きを読む

ぐだぐだ低レベルプログラミング(69) ARM64(AArch64)、論理命令AND一族#1

AndTable
Joseph Halfmoon

今回よりA64の論理演算命令に入ってまいります。AND、OR、EOR、NOTくらいさらっと撫でて終わりっしょ、と思うとさにあらず。便利な合わせ技あり、例によってのエイリアス、そして細かい凸凹もありです。今回は論理演算命令中の大族、AND系命令一族を練習してまいりたいと思います。

“ぐだぐだ低レベルプログラミング(69) ARM64(AArch64)、論理命令AND一族#1” の続きを読む

やっつけな日常(21) NodeRedダッシュボードからIO Expander制御

NodeRedDashboardEC
Joseph Halfmoon

前回、ラズパイ3機のI2Cバスを5V化した先に接続したIO Expander MCP23017の動作確認をPython使って行いました。今回はIO Expanderの持つA、B2つの8ビットポートのうちAポートについて、ブラウザに表示されているNode-REDダッシュボードから点灯/消灯操作を出来るようにしてみました。 “やっつけな日常(21) NodeRedダッシュボードからIO Expander制御” の続きを読む

ブロックを積みながら(71) Node-RED、rpi-gpio in ノード

RaspberryPiINOUT_IFcircuit
Joseph Halfmoon

前回Node-REDから、Raspberry PiのGPIO端子を出力として操作してみました。今回は入力として使用してみます。前回同様、外部のボードとはフォトカプラで絶縁しています。入力イベント「ボタンを押した」を捉まえるために昔やった記憶のあるfilterノードに御出馬お願い。その裏で前回の出力回路を微妙に修正も。

“ブロックを積みながら(71) Node-RED、rpi-gpio in ノード” の続きを読む

ブロックを積みながら(70) Node-RED、rpi-gpio out ノード

RpiOUT_B0
Joseph Halfmoon

今回からRaspberry Pi上でNode-REDを走らせているときに使えるノードをいくつか実験して行きたいと思います。Raspberry Piの持つ拡張端子を直接操作していくものども。制約事項もままありますが、外部回路を接続できるので応用無限大?ホントか?

“ブロックを積みながら(70) Node-RED、rpi-gpio out ノード” の続きを読む

ぐだぐだ低レベルプログラミング(68) ARM64(AArch64)、算術命令エイリアス#2

ArithAliasTable2
Joseph Halfmoon

前回に続きARM64の算術演算命令のエイリアスを動かしていきたいと思います。テーマはNegate、「符号反転」命令です。「2の補数」世界なので符号ビットの操作では終わりませんよ。上の表をみていただけばお分かりのとおり、NEG、NEGS、NGC、NGCSと4命令もあります。まあみんなSUB系命令のエイリアスですが。

“ぐだぐだ低レベルプログラミング(68) ARM64(AArch64)、算術命令エイリアス#2” の続きを読む

やっつけな日常(20) Raspberry Pi 3、5V IO Expander動作確認

DUT_schematic
Joseph Halfmoon

前回、ラズパイ3機からとりだしたI2C配線を5V化するところの配線の接続確認で疲れてハードだけで終わってました。今回は動作確認用のソフトウエア(Python スクリプト)を走らせてIO Expander MCP23017が動作OKなことを確認します。動作確認方法は吉例LEDの点滅です。

“やっつけな日常(20) Raspberry Pi 3、5V IO Expander動作確認” の続きを読む

やっつけな日常(19) Raspberry Pi 3で5VのI2C, 配線抜けてた動かない

RpiPCA9306
Joseph Halfmoon

ブレッドボードとジャンパ線で実験用の回路をこさえるのはお手軽で良いです。ただ時折、思わぬところで足をすくわれます。今回はラズパイ3のI2C信号を5V化した先に5V電源のIO Expanderを取り付けようとしてハマりましたです。「ちょろい」などと不埒なことを考えて手を抜いたバチがあたりました。

“やっつけな日常(19) Raspberry Pi 3で5VのI2C, 配線抜けてた動かない” の続きを読む

ぐだぐだ低レベルプログラミング(67) ARM64(AArch64)、算術命令エイリアス#1

ArithAliasTable
Joseph Halfmoon

前回ようやく終わったadd系(足し算)の次はsub系(引き算)かというと似たことを繰り返しても仕方ないなと思いました。そこで算術演算命令の中で「微妙な」cmp系へ行きたいと思います。RISCあるあるの「実はcmp命令なんて無い」というオチの命令群です。勿論ちゃんと動作します。裏ではsub系命令が暗躍?していますぞ。

“ぐだぐだ低レベルプログラミング(67) ARM64(AArch64)、算術命令エイリアス#1” の続きを読む

ぐだぐだ低レベルプログラミング(66) ARM64(AArch64)、adc、加算キャリー付

ADD_INSN_ADDC
Joseph Halfmoon

add系命令の5回目です。流石にそろそろaddを終わらせて次回は次の命令に行きたいと思います。addの最後を飾る?のはadc、キャリー付きのaddです。ソースオペランドレジスタ2個に加えてキャリーフラグの1ビットを加えるもの。この命令に関してだけは、オペランドのシフトも拡張もありません。良かった簡単で。

“ぐだぐだ低レベルプログラミング(66) ARM64(AArch64)、adc、加算キャリー付” の続きを読む