· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› ООП и асм

<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . >>

Посл.отвђт Сообщенiе


Дата: Май 10, 2004 11:10:11

S_T_A_S_
Да, с Де%#ями я немного знаком. К сожалению, возможности моего интернета не позволяют мне скчать что-либо увесистое, но я попробую.

А насчет злостной очепятки. Если класс написан относительно давно или, упаси господи, не тобой, то можно долго провозиться, выясняя почему ошибка и в результате узнать, что еггог в наследовании - что-то не так и не туда сделал. У меня такое было довольно часто - отсюда и неприязнь к ООП.


Дата: Май 11, 2004 17:32:27

А чем неустраивает OOP в HLA?
Или вот еще ссылка. OOP реализовано на макросах в MASM.
И объект MDI Application там есть насколько я помню.
http://biterider.tripod.com/


Дата: Май 11, 2004 21:27:59

> А чем неустраивает OOP в HLA?

Говорят, в HLA синтаксис кривой,
да и вообще это не Ассђмблер.


По поводу ООП модели NaN..
(спасибо за ссылку - красивый там chm)

Про VTable etc я говорить не хочу, поскольку в старых версиях которые я видел она была реализована не лучшим образом.
На первый взгляд в этой - тоже. (с макросами мне сейчас сложно сходу разобраться, но дока.. не обрадовала)

А вот то что мне явно не нравится (а это конечно мелочи, которые просто бросились в глаза):
- В WndProc используется WM-CREATE в том случае, где правильнее было бы - WM_NCCREATE
- вообще, Dispatching mechanism можно бы и пооптимальнее сделать.
- WINDOWCLASS структуру так imho никто уже не заполняет.
- GlobalAlloc не следует использовать.

Почему я придираюсь к мелочам? Потомучто CL.EXE уже давно не использует EBP для доступа к переменным в стековом кадре.
Да и еще кое-какую оптимизацию проводит, которой в той реализации просто нет.


Вообще, imho, FASM имеет заметно большие возможности.
Их только надо научиться использовать =)


Дата: Май 11, 2004 21:37:00

1. HLA наворочен более чем нужно. Слишком похож на PASCAL. Всё что нужно в ООП - это возможность наследования и перекрытия методов. Всё остальное (private,protected,...) - только запутывает.

2. Линк этот ведёт на тот же принцип (OOP by NaN) - который я уже обсуждал. Обьекты такого типа содержат адреса на виртуальные методы ВНУТРИ (!) самого instance. Что странно... при создании, например, 1000 instances мы будем иметь 1000 копий виртуальной таблицы. Не только это замедляет код (конструктор должен прицепить все методы и перекрыть виртуальные), но и увеличивает затраты памяти.

На моём сайте есть неплохая статья:

http://www.codexxi.com/Oop.html

Именно так и будет реализован этот принцип в AsmDev32.


Дата: Май 12, 2004 11:56:05

S_T_A_S_
Говорят, в HLA синтаксис кривой,да и вообще это не Ассђмблер.
Можно не только слушать, что говорят но и самому посмотреть. Кривизна синтаксиса только в том, что там скобки нужно ставить и операнды переставлены местами.
То что это не Ассемблер - то это чисто теоретический вопрос. Можно его назвать интерпретатором и написать на нем код без if else итд так что он один в один переведется в Masm. К тому же есть надежда что скоро увидит свет HLA 2 который уже не будет интерпретатором,а будет полноценным компилятором.
AsmGuru62
В чем он наворочен? Именно возможность наследования и перекрытие методов там только и есть. Никаких private,protected там никогда не было и нет.
К теме VMT: в HLA она не хранится внутри объекта. Объект имеет только ссылку на VMT а сама она лежит в секции данных, ну или куда положишь.


Дата: Май 12, 2004 15:44:21

"...Кривизна синтаксиса только в том, что там скобки нужно ставить и операнды переставлены местами..."

То есть надо полностью переучиваться с нормального (ассемблерного) положения вещей?!
Для меня лично - полностью неприемлемо... Как можно было так полностью изменить ассемблер, что нём невозможно (привычно) разрабатывать?! Идея хороша, но её реализация!..
Кроме того, когда я глянул "Руководство Программиста" - глаза на лоб! А Вы говорите, не наворочено! Там же целый том по тому как надо изменить себя и свой стиль чтобы следовать принципам HLA.


Дата: Май 12, 2004 16:45:05

[ Elohim Meth : Можно не только слушать, что говорят но и самому посмотреть ]

Дело в том, что я смотрел когда-то.
AsmGuru62 за меня многое написал уже :)

Помимо этого, мне даже синтаксис MASM'а не нравится - он местами двусмысленный.
Кстати, Хайд отказался от MASM, а использует теперь FASM для компиляции, afaik.

Теперь какой смысл использовать внешний парсер, с ТОННОЙ доки, если можно воспользозоваться более простыми вещами?
Макросредств FASM'а для многих случаев достаточно, а еще сам FASM можно использовать в качестве парсера (!) (опыты ведутся)


> К тому же есть надежда что скоро увидит свет HLA 2 который уже не будет интерпретатором,а будет полноценным компилятором.

Возможно так и будет.
Наверное это связано с тем, что FASM имеет открытый исходный код ;)


[ AsmGuru62 : как надо изменить себя и свой стиль чтобы следовать принципам HLA. ]

Вот именно!
Шаг вперед, два шага назад :-/


imho, HLA - это язык сам в себе, у него нет ни прошлого ни будующего. Он разработан просто для обучения студентов.
Для меня уж проще использовать С++, который мне тоже не нравится, но меньше не нравится :) резельтат наверняка будет лучше =)


Дата: Май 13, 2004 11:34:12 · Поправил: Elohim Meth

удалено


Дата: Май 13, 2004 11:34:35 · Поправил: Elohim Meth

AsmGuru62
Ну отказываться от нового языка по причине наличия у него другого, отличного от привычного, ситаксиса по моему неразумно. Но это тоже моё личное мнение.
По поводу навороченности: в реализации классов в HLA есть именно то, что вы хотели - наследование и перекрытие методов и ничего лишнего. Только это я имел ввиду.
S_T_A_S_
Кстати Хайд от MASM не отказывался :-) Он просто предложил альтернативный вариант в виде freeHLA из-за
цитирую "some legal limitations concerning the distribution of these files"

Какая связь между появлением HLA2 и открытым исходным кодом FASM?


Дата: Май 13, 2004 12:34:20

Elohim Meth

"some legal limitations concerning the distribution of these files" ??????

:) Ну.. написать-то можно хоть что. А вот тестил он на скорость ассемблеры зачем? От нечего делать? Ну-ну ;)
Помимо этого, он проводил исследования на корректность производимых COFF файлов.. Думаете MASM выиграл у FASM'а? ;)

В этом мире некоторые вещи устроены не так, как их кто-то хочет показать.
Хайд написал тонну различных PDF, а Privalov - сравнительно небольшой исходник, без единого комментария..
Причем большенство из того, что делает парсер HLA,
относительно просто реализует Ассђмблер FASM при помощи макросов.
Любой может сколь угодно долго собираться написать свой компилятор..
Но написать его - на это способен не каждый. Тем более - написать хорошо.


ЗЫ
Рекомендую почитать посты Хайда на форуме FASM


Дата: Май 13, 2004 13:30:43

S_T_A_S_
Да нет я конечно не думаю что MASM в чем то выиграл у FASM. Просто до тех пор пока я пишу на HLA мне в сущности не важно что компилирует asm файлы MASM или FASM. Просто мне привычнее смотреть MASM листинги. Таких мощных и в тоже время простых и понятных макросов как в HLA я не видел нигде.
Хотя FASM я специально не изучал, только посмотрел несколько раз, может там все гораздо лучше чем в HLA.


Дата: Май 13, 2004 14:57:27

Что мне понравилось в макросной реализации ООП - никаких ограничений! Пример того что я спокойно делаю макросами и чего вроде нет в ЯВУ:

1) Переопределение не только класса, но и объекта.
2) Переопределение глубоковложенного предка. - Помнится о таком я только мечтал...
3) Предки могут не только наследовать код предка, но и выкидывать его, а в ЯВУ - класс тянет за собой всё "барахло" предков.


PS:
чтото я иногда стал загоняться с ООП, тут надо быть осторожней, не перебарщивать...


Дата: Май 13, 2004 16:50:47

Elohim Meth
Хм.. только лучше не сравнивать MASM и FASM - такой флейм уже не раз был :-\

По поводу макросов.. Вот сложный вопрос:
- могут ли макросы в HLA создавать (определять) новые макросы?

И еще 2 простых:
- можно ли в HLA сделать так, что бы адресация к переменным в стековом кадре происходила через [ESP+XX], а не [EBP+XX] ?
- можно ли это сделать просто ?


Вобще же, imho, FASM и HLA сравнивать не совсем корректно. Первый - это Ассђмблер, а второй - это парсер.
Возможности HLA определяет Хайд, а FASM'а - сам пользователь.


Дата: Май 13, 2004 17:22:08

S_T_A_S_
Ни в коем случае не хочу начинать флейм против FASM или MASM. Тем более что в возможностях FASM не разбирался.

Ответ на первый вопрос - да.
Насколько это сложно? Ну простой макрос сгенерировать просто а сложный сложно :-)) Если суметь сгенерировать строку с текстом макроса то дальше никаких проблем нет.
Может еще какие способы есть я пока не знаю потому что не было необходимости делать такие вещи.

Ответ на второй вопрос тоже - да
?@basereg = esp
?@parmoffset = тому что нужно
и можно внутри процедуры обращаться к параметрам по имени

Насколько это сложно можете судить сами.


Дата: Май 13, 2004 17:25:04

S_T_A_S_
Возможности HLA определяет Хайд, а FASM'а - сам пользователь.
И какие возможности определяет пользователь?
Хотелось бы на примере. (желательно не очень сложном :-))

<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.183