一番シンプルなC言語のプログラムのアセンブリ言語変換
Microchip studioでC言語のプログラムを作成して、ビルドでできた .lss ファイルを見るといろいろ長い。
new -project で gcc c executable project で新規プロジェクトを作成するとシンプルなコードができる。

#include


int main(void)
{
/* Replace with your application code */
while (1)
{
}
}

不要なものを入れたくないので、 #include コメント化

これでビルドしてできたHEXは、


:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C9441000C940000F4
:06008000FFCFF894FFCF52
:00000001FF


.lssの一部を抜き出してみると...

Disassembly of section .text:

00000000 <__vectors>:
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
4: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
8: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
 -途中省略ー
64: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>

00000068 <__ctors_end>:
68: 11 24 eor r1, r1
6a: 1f be out 0x3f, r1 ; 63
6c: cf ef ldi r28, 0xFF ; 255
6e: d8 e0 ldi r29, 0x08 ; 8
70: de bf out 0x3e, r29 ; 62
72: cd bf out 0x3d, r28 ; 61
74: 0e 94 40 00 call 0x80 ; 0x80

78: 0c 94 41 00 jmp 0x82 ; 0x82 <_exit>

0000007c <__bad_interrupt>:
7c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>

00000080
:

// #include
int main(void)
{
80: ff cf rjmp .-2 ; 0x80


00000082 <_exit>:
82: f8 94 cli

00000084 <__stop_program>:
84: ff cf rjmp .-2 ; 0x84 <__stop_program>

というわけで、これが最低限のCコンパイラで生成されるアセンブリ言語のようだ。
0番地から68番地に飛んで、なんか省略できない設定をして、
80番地をコールして、80番地で無限ループに入る。
リターンは無いけど、もしリターンがあっても、82番地に飛んで、そこで割り込み禁止して無限ループに入る。
というプログラムになるようだ。



2024.02.13 18:57 | pmlink.png 固定リンク | folder.png その他・雑談
LED電球の分解、その1
LED電球が故障して極端に暗くなってしまいました。



なので捨てる前に感謝を込めて分解。
接着されてて分解困難だったのでバンドソーでカット。
電球部分はガラスじゃなくてプラです。



基板はこれだけ。



配線もこれだけ。



この状態で恐る恐る点灯してみました。



基板の裏面はアルミ?と思われる金属。根元部分も金属でたぶん放熱のためです。
なので、カットした状態で点灯は熱的にも危険。

頑張ってる感のある電解コンデンサは耐圧200V.




AVRマイコン・リファレンス・ブック
ブックマーク。
これ1冊あれば、VRマイコンはほぼ完ぺき。

AVRマイコン・リファレンス・ブック
2024.02.13 18:13 | pmlink.png 固定リンク | folder.png 本の紹介
x86アセンブラでプログラム
2024.02.13 18:09 | pmlink.png 固定リンク | folder.png その他・雑談
AVR マイコンのアーキテクチャと機械語
2024.02.13 17:41 | pmlink.png 固定リンク | folder.png その他・雑談

- CafeLog -