0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VisualStudioでインラインアセンブラ

Last updated at Posted at 2022-07-17

【私が思うアセンブリ言語(読まなくてもよい)】
「今更?」「そんなのやってなんの役に立つの?」と言われることがあるアセンブリ言語だが、私は高級言語を使う上でも役に立つ知識だと思っている。
その根拠として、高級言語でコードを書いているときに「アセンブリコードだとこうなるんだろうな」という予測ができるようになるからだ。
アセンブリ言語は機械語と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である。
レジスタの容量については別枠で紹介したいと思う。

0
1
1

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?