unknown 2 days ago
parent
commit
ca5cafb48a
3 changed files with 53 additions and 7 deletions
  1. 20 6
      .obsidian/workspace.json
  2. 14 1
      ASM/asm_x64.md
  3. 19 0
      ASM/gdb.md

+ 20 - 6
.obsidian/workspace.json

@@ -35,6 +35,20 @@
               "title": "asm_x64"
             }
           },
+          {
+            "id": "fa34b9b6e0cd5875",
+            "type": "leaf",
+            "state": {
+              "type": "markdown",
+              "state": {
+                "file": "ASM/asm_x64.md",
+                "mode": "source",
+                "source": false
+              },
+              "icon": "lucide-file",
+              "title": "asm_x64"
+            }
+          },
           {
             "id": "94e9f002dcb57a44",
             "type": "leaf",
@@ -78,7 +92,7 @@
             }
           }
         ],
-        "currentTab": 3
+        "currentTab": 4
       }
     ],
     "direction": "vertical"
@@ -210,14 +224,15 @@
   },
   "active": "0df03167c0b318ca",
   "lastOpenFiles": [
-    "ROTEK/metrolog/readme.md",
     "ASM/asm_x64.md",
+    "English/Homework/Homework 7.md",
+    "ROTEK/allwinner 069 070.md",
+    "ASM/gdb.md",
+    "ROTEK/metrolog/readme.md",
     "Кодинг.md",
     "ASM",
     "English/Homework/Homework 8.md",
     "English/words.md",
-    "English/Homework/Homework 7.md",
-    "ROTEK/allwinner 069 070.md",
     "todo/Задачи по направлениям.md",
     "ROTEK/Arbiter.md",
     "STM32/Makefile template.md",
@@ -254,7 +269,6 @@
     "English/Homework/Homework 5.md",
     "ROTEK/Artery testing.md",
     "Untitled.md",
-    "hardcore web development/11. SQL/JOIN/LEFT и RIGHT OUTER JOIN.md",
-    "Python/Архитектура.md"
+    "hardcore web development/11. SQL/JOIN/LEFT и RIGHT OUTER JOIN.md"
   ]
 }

+ 14 - 1
ASM/asm_x64.md

@@ -39,4 +39,17 @@ movw 0(%rbx, %rcx), %ax
 // Можно указать размер позиции смещения. 
 // Вот здесь он равен 2-ум байтам
 movw 4(%rbx, %rcx, 2), %ax
-```
+```
+
+~={yellow}Адресация относительно регистра rip=~
+
+%rip - Re-Extended Instruction Pointer - указатель команд. 
+Хранит адрес очередной команды, которая будет выполнена.
+
+Если в качестве базового смещения относительно регистра %rip указана метка, то на место этой метки будет поставлено расстояние в байтах от значения %rip до того адреса, который обозначен данной меткой
+```bash
+movb data(%rip), %al
+```
+
+**PIC (PIE) - Position Independent Code**
+Это код, который не зависит от абсолютных адресов. Все ссылки на ячейки памяти относительные (например относительно счетчика команд). Этот код может быть размещен в любой области памяти. Может использоваться при создании динамических библиотек.

+ 19 - 0
ASM/gdb.md

@@ -0,0 +1,19 @@
+```bash
+$ gdb my_file.exe # запустить отладчик
+$ r (run) # запустить программу
+$ b _start # установить breakpoint на адрес с меткой _start
+$ disassemble _start # выводить ассемблерный код до конца программы или до конца следующей метки
+$ i r (info registers) # вывести содержание регистров
+$ x/s &метка (или адрес) # вывевсти строку символов
+
+$ x/5bd &метка (или адрес)
+# x - eXamine
+# 5 - количество байтов
+# b - Byte
+# d - Dec (десятичная форма) - по умолчанию
+
+$ ni # выполнить следующую команду
+
+$ n (next) или s (step) # выполнить код до слудующей точки останова
+
+```