Skip to content

Commit

Permalink
New Post
Browse files Browse the repository at this point in the history
  • Loading branch information
Scrrrr committed Nov 21, 2024
1 parent fd9d16c commit b49d7dd
Show file tree
Hide file tree
Showing 6 changed files with 129 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: Active Directoryを構築する
published: 2024-11-16
description: ''
image: ''
tags: []
category: ''
draft: true
lang: 'ja'
---

Mictosoftは学生の学習向けに様々なMicrosoftのソフトを無償で提供しています。
そこで今回はWindows Server 2022でActive Directoryを構築していきます。

### ダウンロード
Microsoftのポータルサイトに大学から配布されたMiscrosoftアカウントでログインして`Education→ソフトウェア`の順にアクセスします。
[https://portal.azure.com/#view/Microsoft_Azure_Education/EducationMenuBlade/~/software](https://portal.azure.com/#view/Microsoft_Azure_Education/EducationMenuBlade/~/software)
執筆現在はWindows Server 2025まで利用でいます。

![](./download.png)

ライセンスキーはダウンロードを開始するとダウンロードのボタンの下をスクロールすると`キーを表示する`というボタンが現れます。
Binary file added src/content/posts/Active-Directory/download.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/posts/learn-Assmbly/Register.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/content/posts/learn-Assmbly/X64-Register_.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
---
title: x64アセンブリ言語を勉強する
published: 2024-11-16
description: ''
image: ''
tags: [Assembly,x64]
category: 'Learn'
draft: true
lang: 'ja'
---

# データ型
| データ型 | ビット数(バイト数) | 接頭辞 |
| -------- | ------------------ | ------ |
| Byte | 8bit (1bytes) | b |
| Word | 16bit (2bytes) | w |
| Dword | 32bit (8bytes) | l |
| Qword | 64bit (16bytes) | q |

### 1Byteの半分
ニブル(nybble)は4Bitを表している。つまり16進数で`5D`であれば**2ニブル**と呼ぶ

# 汎用レジスタ
x64にレジスタは16個ある。一つのレジスタのビット数は64Bitである。

![](./X64-Register.png)

```
{rax, rbx, rcx, rdx, rbp, rsi, rdi, rsp, r8, r9, r10, r11, r12, r13, r14, r15}
```

## レジスタにアクセス
例えば`rax`レジスタの下位32Bitを参照するには`eax`レジスタにアクセスする。
また下位16Bitを参照する場合は`ax`レジスタを参照する。
`ax`レジスタの上位8bitにアクセスする場合は`ah`レジスタを参照し、下位8bitにアクセスする場合は`al`レジスタを参照する。
![](./Register.jpg)
`rax`レジスタは全体でこのような構造をしている。

:::important[重要]
`eax`,`ax`,`ah`,`al`はそれぞれ独立したレジスタではなく、`rax`レジスタの一部にアクセスするための**Alias**である
:::

### 全てのレジスタのAliasはこのようになる。

| 64ビットレジスタ | 下位32ビット | 下位16ビット | 下位8ビット |
| ---------------- | -------------- | -------------- | ----------- |
| rax | eax | ax | al |
| rbx | ebx | bx | bl |
| rcx | ecx | cx | cl |
| rdx | edx | dx | dl |
| rdi | edi | di | dil |
| **rbp** | **ebp** | bp | bpl |
| **rsp** | **esp** | sp | spl |
| r8 | r8d | r8w | r8b |
| r9 | r9d | r9w | r9b |
| r10 | r10d | r10w | r10b |
| r11 | r11d | r11w | r11b |
| r12 | r12d | r12w | r12b |
| r13 | r13d | r13w | r13b |
| r14 | r14d | r14w | r14b |
| r15 | r15d | r15w | r15b |
| | | | |

## レジスタの役割
`rsp`レジスタは**スタックポインタレジスタ**として使用される。
`rbp`レジスタは**ベースポインタレジスタ**として利用される。
それ以外のレジスタの用途は汎用として利用され、演算の際に一時的な格納場所として使用されたりする。

# 呼び出し規約
## Windowsでの呼び出し規約

関数から呼び出された引数は`rcx`,`rdx`,`r8`,`r9`の順に格納される。第四引数以降はスタックに格納される。

| 引数 | **整数型・ポインター** | 浮動小数点 |
| -------- | --------------------- | ---------- |
| 第一引数 | **rcx** | xmm0 |
| 第二引数 | **rdx** | xmm1 |
| 第三引数 | **r8** | xmm2 |
| 第四引数 | **r9** | xmm3 |


# ptr演算子
アセンブリではメモリサイズを自分で明記しなくてはい。
```
mov [rcx], 5dh
```
そのため、このような記述ではrcxレジスタのどのデータサイズで`5`を格納するのかが分からないためエラーとなる。

```
mov eax, 5dh
mov [rcx], eax
```
このような記述をする必要がある。
```
mov dword ptr[rcx], 5dh
```
ptr演算子を使うことでメモリサイズを指定することが出来る。

| ptr演算子 | サイズ(bit) |
| ----------- | ----------- |
| byte ptr | 1 |
| word ptr | 2 |
| dword ptr | 4 |
| qword ptr | 8 |
| xmmword ptr | 16 |
| ymmword ptr | 32 |
| zmmword ptr | 64 |

0 comments on commit b49d7dd

Please sign in to comment.