Size: a a a

Ассемблер

2021 August 12

D

Den in Ассемблер
Да я как бы и с++ тоже изучаю это все вместе нужно чтобы разбираться лучше как что работает :)
источник

Y

Yura in Ассемблер
Ну а кто будет писать проги на асме
источник

E

Entusiast in Ассемблер
Тут весь чат пишет программы на ассемблере.
Более того, 10% этого чата пишут ТОЛЬКО на ассемблере, и некоторые 3% пишут на ассемблере софт в коммерческих целях

Все цифры взял просто по наблюдениям, могут быть неточными
источник

D

Den in Ассемблер
Асм бросать нельзя асм это крутотень, его надо использовать везде где можно!
источник

Y

Yura in Ассемблер
Ок
источник

d

disba1ancer in Ассемблер
   uint32_t iNodeGroup = (Ext2_Bootloader_INode - 1) / superblock.inodes_per_group;
   uint32_t inGrpINodeIdx = (Ext2_Bootloader_INode - 1) % superblock.inodes_per_group;
   uint32_t blkWithINodeGrp = iNodeGroup >> (superblock.log_block_size + 5);
   uint32_t locINodeGrpIdx = iNodeGroup - (blkWithINodeGrp << (superblock.log_block_size + 5));
   readBlock(blkWithINodeGrp + superblock.first_data_block + 1);
   uint32_t blkWithINode = inGrpINodeIdx >> (superblock.log_block_size + 10 - hsb(superblock.inode_size));
   uint32_t inBlkINodeIdx = inGrpINodeIdx - (blkWithINode << (superblock.log_block_size + 10 - hsb(superblock.inode_size)));
   readBlock(((Ext2_BlockGroupDescriptor*)buffer)[locINodeGrpIdx].inode_table + blkWithINode);
   memcpy(&inode, buffer + (inBlkINodeIdx << hsb(superblock.inode_size)), sizeof(inode));
/*
[iNodeGroup, inGrpINodeIdx] = (Ext2_Bootloader_INode - 1) / superblock.inodes_per_group // 2

tempval_00 = superblock.log_block_size + 5 // 3
blkWithINodeGrp = iNodeGroup >> tempval_00 // 4

tempval_01 = blkWithINodeGrp << tempval_00 // 4, dead vars: tempval_00
locINodeGrpIdx = iNodeGroup - tempval_01 // 3, dead vars: iNodeGroup, tempval_01

tempval_02 = blkWithINodeGrp + superblock.first_data_block // 3, dead vars: blkWithINodeGrp
tempval_03 = tempval_02 + 1 // 3, dead vars: tempval_02
readBlock(tempval_03) // 2, dead vars: tempval_03

tempval_04 = superblock.log_block_size + 10 // 3
tempval_05 = hsb(superblock.inode_size) // 4
tempval_06 = tempval_04 - tempval_05 // 4, dead vars: tempval_04
blkWithINode = inGrpINodeIdx >> tempval_06 // 5
tempval_07 = blkWithINode << tempval_06 // 5, dead vars: tempval_06
inBlkINodeIdx = inGrpINodeIdx - tempval_07 // 4, dead vars: inGrpINodeIdx, tempval_07

tempval_08 = locINodeGrpIdx * sizeof(Ext2_BlockGroupDescriptor) // may be logarithmic. 4, dead vars: locINodeGrpIdx
tempval_09 = tempval_08 + offsetof(Ext2_BlockGroupDescriptor, inode_table) // 4, dead vars: tempval_08
tempval_10 = buffer + tempval_09 // 4, dead vars: tempval_09
tempval_11 = *(uint32_t)tempval_10 // 4, dead vars: tempval_10
tempval_12 = tempval_11 + blkWithINode // 3, dead vars: blkWithINode, tempval_11
readBlock(tempval_12) // 2, dead vars: tempval_12

tempval_13 = inBlkINodeIdx << tempval_05 // 1, dead vars: tempval_05, inBlkINodeIdx
tempval_14 = buffer + tempval_13 // 1, dead vars: tempval_13
memcpy(&inode, tempval_14, sizeof(inode)) // 0, dead vars: tempval_14
*/
теперь это можно написать на асме...
источник

A

Aleksandr in Ассемблер
В MSVC встроенный редактор диалогов, почему бы нк использовать его?
источник

E

Entusiast in Ассемблер
У меня почему-то ощущение, что этот код на ассемблере будет короче
источник

d

disba1ancer in Ассемблер
тут один и тот же код дважды написан
источник

d

disba1ancer in Ассемблер
второй раз в комментарии и это совсем псевдокод
источник

E

Entusiast in Ассемблер
А ты всё загрузчики изучаешь
источник

d

disba1ancer in Ассемблер
почему изучаю?
источник

E

Entusiast in Ассемблер
А что, пишешь для чего-то серьёзного?
источник

d

disba1ancer in Ассемблер
осталось всего ничего, прочитать файл с ext2
источник

d

disba1ancer in Ассемблер
ещё сам не уверен, но хочется хотябы большой файл мочь загрузить и его уже запускать...
источник

d

disba1ancer in Ассемблер
а то пол килобайта в mbr и ещё килобайт в ext2 маловато места под код
источник

d

disba1ancer in Ассемблер
а ещё я подсчитал что уложусь в 5 регистров
источник

D

Den in Ассемблер
Да разницы особой нет наверное, тут у меня компилится 2 секунды, меня это устраивает а мелкосовтовский софт новый погубит мне компьютер еще
источник

A

Aleksandr in Ассемблер
Ты мог бы почитать на сайте граба о формате файла для мультибута и грузить свое ядро грабом
источник

d

disba1ancer in Ассемблер
нихатю граб...
источник