185 похожих чатов

Можете оценить по парочке макросов файловую систему? мне нужна оценка

по двум параметрам: сложность написания драйвера и эффективность по месту хранения (системные данные ФС занимают меньше места -> лучше). Сразу говорю, этот код это заголовок-скетч, я хочу сделать продуманную но не сложную ФС (По факту мне просто почему-то тяжело понять FAT32, но и синдром фатального недостатка никто не отменял)

; blkadr - block device addr
macro blkadr cluster, offset
{
  dd cluster
  dw offset
}


; HCFS entry. all is file. directories too. directory is a file contains list of included entries
; type - 0x00 if corrupted, 0x01 if lost or found, 0x02 if data block
; type2 - subtype of descriptor
; for corrupted: 0x00 not restorable, 0x01 restorable, 0x02 not too corrupted, 0x03 not corrupted
; for lost+found: 0x00 not restorable, 0x01 restorable, 0x02 not lost (immediately found), 0x03 not found
; for data block: 0x15 - EPB, 0x16 - file descriptor, 0x17 - datablock descriptor, 0x18 - indexing descriptor
macro hcfs!entry type, type2, data
{
  db 0x16
  db type
  db type2
  db data
}


; Extended Parameters Block (64 bytes)
; volname (ascii) - name of volume
; sector_size (unsigned short int) - sector size in bytes
; cluster_size (unsigned short int) - cluster size in sectors
; size (uint) - size of volume in clusters
; root (blkadr) - root entry descriptor address
; index_XXXX (int) - indexing data (-1 if not indexed yet)
; flags (char) - flags
macro hcfs!EPB volname, sector_size, cluster_size, size, root, index_used, index_free, flags
{
  local ..name_start
  db 0x02         ; 1
  db 0x15         ; 2
  db "HCFS10"     ; 8
  dw sector_size  ; 10
  dw cluster_size ; 12
  dd size         ; 16
  blkadr root     ; 22
  dd index_used   ; 26
  dd index_free   ; 30
..name_start:
  db volname, 0
  db 0 times 34-$+..name_start ; 64
}


; <file> alias for hcfs!entry
; filname (ascii) - filename
; flags (char) - flags
; dtsg (blkadr) - data block address
; prev (blkadr) - previous fs descriptor address
; next (blkadr) - next fs descriptor address
; parent (blkadr) - reserved so far
; for every blkadr we need to save backup version.
; it's useless for now, but you MUST fill this fields
macro hcfs!file filname, flags, dtsg, prev, next, parent
{
  local ..name_start
  db 0x02                      ; 1
  db 0x16                      ; 2
  db flags                     ; 3
  blkadr dtsg                  ; 8
  blkadr dtsg                  ; 13
  blkadr prev                  ; 18
  blkadr prev                  ; 22
  blkadr next                  ; 27
  blkadr next                  ; 32
  blkadr parent                ; 37
..name_start:
  db volname, 0
  db 0 times 27-$+..name_start ; 64
}


; <dataseg> alias for hcfs!entry
; dtad (blkadr) - address of start of segment
; prev (blkadr) - address of previous segment of file
; next (blkadr) - anologic
; size (uint) - size of segment in bytes
; flags (char) - flags
macro hcfs!seg dtad, prev, next, size, flags
{
  db 0x02
  db 0x17
  blkadr dtad
  blkadr dtad
  blkadr prev
  blkadr prev
  blkadr next
  blkadr next
  dd size
  db flags
}

Язык FASM

9 ответов

9 просмотров

а можно это на гист?

> я хочу сделать продуманную но не сложную ФС BULLSHIT

а ну и второе если вы пришли сюда с таким концептом то увы, ФС у вас не вышла

По парочке макросов не оценить. Лучше алгоритмы описать работы, а конкретные структуры данных - дело десятое.

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
10
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта