From b38d4d0591d8f7b45a9a05474f3f688c8a394457 Mon Sep 17 00:00:00 2001 From: Alpay Yildirim Date: Wed, 12 Sep 2018 11:28:49 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9E=95=20Add=20Text=20x86=20registers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 369ccdd..85fdc79 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,11 @@ Knowledge I have found interesting about the topic of x86 assembly ## x86 Registers ![x86 assembly Registers](x86-registers.png) + +In **x86 registers** have an '**e**' in front of their name.
+Example: **e**ax, **e**bx, **e**cx, **e**dx, **e**bp + +*Additional Info:
+In **x64** you have a '**r**' instead.
+Example: **r**ax, **r**bx, **r**cx, **r**dx, **r**bp
+You also have **double-precision floating point going from xmm0 to xmm15**.* From 0ac076ba8a5aa88747f237f73b910ed122e9521c Mon Sep 17 00:00:00 2001 From: Alpay Yildirim Date: Wed, 12 Sep 2018 11:38:38 +0200 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9E=95=20Add=20Text=20x86=20registers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 85fdc79..45f7bed 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,18 @@ # x86-assembly-Reverse-Engineering Knowledge I have found interesting about the topic of x86 assembly + +## + ## x86 Registers + +*(Older Text from University of Virginia Computer Science (2006), one of the best Guides for x86 Assembly)* + +Modern (i.e 3**86** and beyond) x**86** processors have eight 32-bit general purpose registers, as depicted in Figure 1. **The register names are mostly historical**. For example, **EAX** used to be called the accumulator since it was used by a number of arithmetic operations, and **ECX** was known as the counter since it was used to hold a loop index. Whereas most of the registers have lost their special purposes in the modern instruction set, by convention, two are reserved for special purposes — **the stack pointer (ESP)** and the **base pointer (EBP).** + +For the **EAX**, **EBX**, **ECX**, and **EDX** registers, subsections may be used. For example, the least significant 2 bytes of **EAX** can be treated as a 16-bit register called **AX**. The least significant byte of **AX** can be used as a single 8-bit register called **AL**, while the most significant byte of **AX** can be used as a single 8-bit register called **AH**. These names refer to the same physical register. When a two-byte quantity is placed into **DX**, the update affects the value of **DH**, **DL**, and **EDX**. These sub-registers are mainly hold-overs from older, 16-bit versions of the instruction set. However, they are sometimes convenient when dealing with data that are smaller than **32-bits (e.g. 1-byte ASCII characters)**. + +When referring to registers in assembly language, **the names are not case-sensitive**. For example, the names **EAX** and **eax** refer to the **same register**. + ![x86 assembly Registers](x86-registers.png) In **x86 registers** have an '**e**' in front of their name.
From 7e0e48436c1be143ea3be1343f6a7efab9e9d64a Mon Sep 17 00:00:00 2001 From: Alpay Yildirim Date: Wed, 12 Sep 2018 11:39:17 +0200 Subject: [PATCH 3/3] =?UTF-8?q?=E2=9E=95=20Add=20Text=20x86=20registers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45f7bed..f26460c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Knowledge I have found interesting about the topic of x86 assembly ## x86 Registers -*(Older Text from University of Virginia Computer Science (2006), one of the best Guides for x86 Assembly)* +*(Older Text from the University of Virginia Computer Science (2006), one of the best Guides for x86 Assembly)* Modern (i.e 3**86** and beyond) x**86** processors have eight 32-bit general purpose registers, as depicted in Figure 1. **The register names are mostly historical**. For example, **EAX** used to be called the accumulator since it was used by a number of arithmetic operations, and **ECX** was known as the counter since it was used to hold a loop index. Whereas most of the registers have lost their special purposes in the modern instruction set, by convention, two are reserved for special purposes — **the stack pointer (ESP)** and the **base pointer (EBP).**