unknown 3 өдөр өмнө
parent
commit
19d8dbfcae

+ 17 - 17
.obsidian/workspace.json

@@ -8,31 +8,31 @@
         "type": "tabs",
         "children": [
           {
-            "id": "ae9caf96c45050f2",
+            "id": "eef2d4f38e3fe96a",
             "type": "leaf",
             "state": {
               "type": "markdown",
               "state": {
-                "file": "English/words.md",
+                "file": "todo/Задачи по направлениям.md",
                 "mode": "source",
                 "source": false
               },
               "icon": "lucide-file",
-              "title": "words"
+              "title": "Задачи по направлениям"
             }
           },
           {
-            "id": "eef2d4f38e3fe96a",
+            "id": "2c70f6f41521fcbf",
             "type": "leaf",
             "state": {
               "type": "markdown",
               "state": {
-                "file": "todo/Счета.md",
+                "file": "ROTEK/bt67xx/common.md",
                 "mode": "source",
                 "source": false
               },
               "icon": "lucide-file",
-              "title": "Счета"
+              "title": "common"
             }
           }
         ],
@@ -59,7 +59,7 @@
                 "autoReveal": false
               },
               "icon": "lucide-folder-closed",
-              "title": "Файловый менеджер"
+              "title": "Files"
             }
           },
           {
@@ -159,15 +159,19 @@
   },
   "left-ribbon": {
     "hiddenItems": {
-      "switcher:Меню быстрого перехода": false,
-      "graph:Граф": false,
-      "canvas:Создать новый холст": false,
-      "command-palette:Открыть палитру команд": false,
-      "markdown-importer:Импорт Markdown-файлов": false
+      "switcher:Open quick switcher": false,
+      "graph:Open graph view": false,
+      "canvas:Create new canvas": false,
+      "command-palette:Open command palette": false,
+      "markdown-importer:Open format converter": false
     }
   },
-  "active": "eef2d4f38e3fe96a",
+  "active": "2c70f6f41521fcbf",
   "lastOpenFiles": [
+    "todo/Задачи по направлениям.md",
+    "ASM/gdb.md",
+    "ASM/asm_x64.md",
+    "todo/Счета.md",
     "English/Homework/Homework 8.md",
     "English/words.md",
     "linux/vim.md",
@@ -178,12 +182,9 @@
     "English/Texts/Text 0.md",
     "ROTEK/allwinner 069 070.md",
     "Кодинг.md",
-    "ASM/asm_x64.md",
     "English/Homework/Homework 7.md",
-    "ASM/gdb.md",
     "ROTEK/metrolog/readme.md",
     "ASM",
-    "todo/Задачи по направлениям.md",
     "ROTEK/Arbiter.md",
     "STM32/Makefile template.md",
     "common.md",
@@ -210,7 +211,6 @@
     "English/img/29-5.jpg",
     "English/img/29-4.jpg",
     "English/img/29-3.jpg",
-    "todo/Счета.md",
     "todo/Тренировки и занятия.md",
     "English/Homework/Homework 6.md",
     "hardcore web development/11. SQL/Создание таблиц.md"

+ 49 - 1
ASM/asm_x64.md

@@ -52,4 +52,52 @@ movb data(%rip), %al
 ```
 
 **PIC (PIE) - Position Independent Code**
-Это код, который не зависит от абсолютных адресов. Все ссылки на ячейки памяти относительные (например относительно счетчика команд). Этот код может быть размещен в любой области памяти. Может использоваться при создании динамических библиотек.
+Это код, который не зависит от абсолютных адресов. Все ссылки на ячейки памяти относительные (например относительно счетчика команд). Этот код может быть размещен в любой области памяти. Может использоваться при создании динамических библиотек.
+
+~={yellow}Регистр указателя стека=~
+
+%rsp - Re-extended Stack Pointer - Указатель стека
+В начале выполнения программы содержит адрес, слева от которого можно хранить данные.
+
+Для работы со стеком используются два регистра: %rsp и %rdp
+
+%rsp - адрес левой границы стека
+%rdp - адрес правой границы стека
+
+Перед использованием стека нужно скопировать содержимое регистра %rsp в %rbp.
+Для того, чтобы выделить на стеке память под N байтов нужно вычесть число N из регистра %rsp, тем самым "сместить" %rsp влево на N байтов.
+
+```asm
+// Можно загрузить двухбайтовое значение в стек
+movw $0xabcd, 0(%rsp)
+
+// Или 4-ех байтовое
+movl 0x12345678, 2(%rsp)
+
+// Но 8-и байтовое загрузить напрямую нельзя
+subq %8, %rsp; // выделить 8 байт 
+movq $0x0123456789abxdef, %rax // запись в регистр
+movq %rax, 0(%rsp) // перемещение в стек
+
+// Загрузка данных в стек частями
+subq %1, %rsp; // выделить 1 байт в стеке
+movb $0x12, 0(%rsp); // поместить 1 байт в стек
+
+// Далее помещаем два байта в стек
+subq %2, %rsp; // выделить 1 байт в стеке
+movb $0x1234, 0(%rsp); // поместить 1 байт в стек
+
+// Moжно загрузить в стек 2 (8) байта одной командой
+pushw %0x1234
+
+movq $0x0123456789abxdef, %rax // запись в регистр
+pushq %rax; 
+
+
+// Очисить стек
+movq %rbp, %rsp
+```
+
+Если в программе применяются функции, использующие стандартизованные соглашения о вызовах функций (например функции стандартной библиотеки языка Си), то стек должен быть выровнен по 16-байтовой границе, т.е. адреса правой и левой границ стека должны быть кратны 16 (Шестнадцатеричное представление должно оканчиваться на 0).
+
+В начале программы адрес правой границы стека изначально кратен 16. Далее, память на стеке нужно выделять порциями, объем которых кратен 16.

+ 2 - 0
todo/Задачи по направлениям.md

@@ -6,7 +6,9 @@
 - [x] Покрасить змею
 - [x] Оплата счетов за апрель
 - [x] Запись к ортодонту на конец мая
+- [x] Сделать велик и поставить кресло.
 - [ ] Навести порядок в таблице оплаты
+- [ ] Визит к ортодонту 26 мая
 <h6>Работа и образование</h6>
 - [ ] Пройти на 100% курс по Python OOP.
 - [ ] Залить старую версию gnu-arm-eabi на сервер

+ 2 - 2
todo/Счета.md

@@ -7,8 +7,8 @@
 - [x] Нина электричество + TKO ()
 
 ##### <font color = "#1D8571">Передача показаний с 15-ого числа</font>
-- [ ] Широкая вода. хол , гор 
-- [ ] Широкая электричество: 
+- [x] Широкая вода. хол , гор 
+- [x] Широкая электричество: 
 - [x] Подрезково: хол , гор , эл  (передал только электричества!)
 - [x] Химки: 471 - , 473 - , 450 - , 402 - , эл -  (передал только электричества!)
 - [x] Планерная Нина электричество: