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 ответов

16 просмотров

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

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

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

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

Vi Chapmann
блок-схема пока что подойдет?)

+ структуры нормальные, а не это вот

Vi-Chapmann Автор вопроса
Vi Chapmann
а что с этими не так?

никто так не делает, совсем

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта