【私が思うアセンブリ言語(読まなくてもよい)】
「今更?」「そんなのやってなんの役に立つの?」と言われることがあるアセンブリ言語だが、私は高級言語を使う上でも役に立つ知識だと思っている。
その根拠として、高級言語でコードを書いているときに「アセンブリコードだとこうなるんだろうな」という予測ができるようになるからだ。
アセンブリ言語は機械語と1対1の関係になっているため、知識として持っておくと、高級言語でできないこととできることを理解することができる。
私はそのように考えているので、アセンブリ言語は知っておいて損はないと思っている。
【インラインアセンブラの環境説明】
・Visual Studio 2022
・デスクトップ開発環境(C++)
【使い方】
__asmブロックを使う
使用例:
#include <stdio.h>
#include <conio.h>
int main(void){
char ca;
__asm{
mov ah,ca
add ah,ca
mov ca,ah
}
printf("%c",ca);
_getch();
return 0;
}
このようにして、__asmブロックの中でアセンブリ言語を使用することができるのだ。
設定を「Release」「x86」にしておかないとコンパイルできなくなっている。
必然的に使えるレジスタは32bitまでとなっている。
C言語の領域で定義した変数をインラインアセンブラ内で使うこともできるが、変数とレジスタの容量を合わせる必要がある。
charが8bit、shortが16bit、intが32bitである。
レジスタの容量については別枠で紹介したいと思う。