Новый компилятор
TASM: (+)
Очень хорошая поддержка структур и объединений
Мощный препроцессор и макросредства, лучше чем у других
Режим IDEAL, в котором лучше кодить, чем в MASM'е
С помощью например .486 легко писать под какой-нибудь определённый проц
TASM: (-)
Работает только под DOS или WINDOWS
нельзя писать под другие платформы
не поддерживает многомерные массивы
не поддерживает fastcall функции
трудности с написанием Boot сектора
Последняя доступная в сети версия - 5.3 поддерживает только Pentium pro
Нет нормальных include файлов для Windows
В режиме IDEAL под WIndows нельзя напрямую указать тип в секциях данных и неинициализированных данных(можно только db, dw, dd)
сложно использовать 32-битный бинарный формат
MASM: (+)
Доступна последняя версия 7.0, которая поддерживает все инструкции Intel
Хорошая поддержка макросов, структур, массивов и объединений
Также можно писать под какой-нибудь определённый процессор
Есть много средств, упрощающих разработку под Windows
MASM: (-)
Заточен только под DOS/WINDOWS, нельзя ничего делать под другие OS
Не поддерживает многомерных массивов, ни Fastcall функций
Также сложно писать Boot секторы и бинарные 32-битные файлы
NASM: (+)
Многоплатформенный - позволяет писать под DOS, WINDOWS и LINUX
Легко писать любые бинарные файлы
NASM: (-)
Нельзя задать процессор
Нет поддержки структур и массивов
нет встроенной поддержки вызовов функций stdcall и fastcall
не запоминает размерность переменных
только двухпроходной
Неудобно писать под Windows
FASM: (+)
Также многоплатформенный и позволяет легко писать бинарные файлы
Часто обновляется
Есть GUI версия под Windows
FASM: (-)
Нельзя задавать процессор
плохая поддержка структур
нет встроенный поддржки вызова stdcall и fastcall функций
Не запоминает размерность переменных
Нет Include файлов для Windows
Так вот, я предлагаю создать компилятор, который будет иметь все эти приемущества и не иметь этих недостатков. Кто-нибудь поддержит?
я бы хотел поучавствовать.
но у меня есть предложение сделать смесь асма и си типа 2в1.
хотя согласен на любой. давно тема интересует. нарыл немного инфы да все ни как руки не доходят.
hi
я бы хотел поучавствовать.
но у меня есть предложение сделать смесь асма и си типа 2в1.
хотя согласен на любой. давно тема интересует. нарыл немного инфы да все ни как руки не доходят.
А смысл такую смесь делать? В Си есть встроенный ассемблер, его что не достаточно? Да Си и так достаточно низкоуровневый.
GNU as поддерживает кучу архитектур, не только интел, и при этом довольно удобная вещь. Можно даже использовать сишный препроцессор. И зачем тогда изобретать велосипед?
но уклон в сторону асма, типа асм++ :)
если не трудно кинь ссылку на этот ас
а во фре он есть? или в Асп линукс? других дистрибутивов нет.
к тому же сам процесс! никогда не писал компилятора :) (если не считать калькулятора (да и то со страуструпа под vс++ 6.0 содрал))
я имел в виду с++
но уклон в сторону асма, типа асм++ :)
если не трудно кинь ссылку на этот ас
а во фре он есть? или в Асп линукс? других дистрибутивов нет.
к тому же сам процесс! никогда не писал компилятора :) (если не считать калькулятора (да и то со страуструпа под vс++ 6.0 содрал))
гы асм++ это типа с классами? :)))
этот ас должен работать в любом Unix и по идее под Windows заставить можно. В Асп должен быть, проверь есть ли команда as, если нет, поищи пакет binutils на дисках. Когда установишь набираешь info as и читаешь :). Ссылка . А про написание компилятора - асм для обучения не шибко годится (слишком просто :)), лучше что нить посерьезнее написать, типа скриптового языка. На этом сайте вроде инфа по компиляторам есть.
я имел в виду с++
но уклон в сторону асма, типа асм++ :)
если не трудно кинь ссылку на этот ас
а во фре он есть? или в Асп линукс? других дистрибутивов нет.
к тому же сам процесс! никогда не писал компилятора :) (если не считать калькулятора (да и то со страуструпа под vс++ 6.0 содрал))
гы асм++ это типа с классами? :)))
этот ас должен работать в любом Unix и по идее под Windows заставить можно. В Асп должен быть, проверь есть ли команда as, если нет, поищи пакет binutils на дисках. Когда установишь набираешь info as и читаешь :). Ссылка на исходники http://ftp.gnu.org/gnu/binutils/binutils-2.13.1.tar.gz. А про написание компилятора - асм для обучения не шибко годится (слишком просто :)), лучше что нить посерьезнее написать, типа скриптового языка. На этом сайте вроде инфа по компиляторам есть.
Я вот тут подумал и решил, что может быть полезно написать новый компилятор асма. Может кого то устраивают существующие, но я попробую сейчас что-нибудь сказать(TASM, MASM, NASM, FASM)
TASM: (+)
Очень хорошая поддержка структур и объединений
Мощный препроцессор и макросредства, лучше чем у других
Режим IDEAL, в котором лучше кодить, чем в MASM'е
С помощью например .486 легко писать под какой-нибудь определённый проц
TASM: (-)
Работает только под DOS или WINDOWS
нельзя писать под другие платформы
не поддерживает многомерные массивы
не поддерживает fastcall функции
трудности с написанием Boot сектора
Последняя доступная в сети версия - 5.3 поддерживает только Pentium pro
Нет нормальных include файлов для Windows
В режиме IDEAL под WIndows нельзя напрямую указать тип в секциях данных и неинициализированных данных(можно только db, dw, dd)
сложно использовать 32-битный бинарный формат
MASM: (+)
Доступна последняя версия 7.0, которая поддерживает все инструкции Intel
Хорошая поддержка макросов, структур, массивов и объединений
Также можно писать под какой-нибудь определённый процессор
Есть много средств, упрощающих разработку под Windows
MASM: (-)
Заточен только под DOS/WINDOWS, нельзя ничего делать под другие OS
Не поддерживает многомерных массивов, ни Fastcall функций
Также сложно писать Boot секторы и бинарные 32-битные файлы
NASM: (+)
Многоплатформенный - позволяет писать под DOS, WINDOWS и LINUX
Легко писать любые бинарные файлы
NASM: (-)
Нельзя задать процессор
Нет поддержки структур и массивов
нет встроенной поддержки вызовов функций stdcall и fastcall
не запоминает размерность переменных
только двухпроходной
Неудобно писать под Windows
FASM: (+)
Также многоплатформенный и позволяет легко писать бинарные файлы
Часто обновляется
Есть GUI версия под Windows
FASM: (-)
Нельзя задавать процессор
плохая поддержка структур
нет встроенный поддржки вызова stdcall и fastcall функций
Не запоминает размерность переменных
Нет Include файлов для Windows
Так вот, я предлагаю создать компилятор, который будет иметь все эти приемущества и не иметь этих недостатков. Кто-нибудь поддержит?
hmm .. zachem .. <1> - est', <0> - est', <return> toshe vrode kak imeet'Sya .. chto eshyo nushno coderu chtobi vstretit' starost' ? ;)
Я вот тут подумал и решил, что может быть полезно написать новый компилятор асма. Может кого то устраивают существующие, но я попробую сейчас что-нибудь сказать(TASM, MASM, NASM, FASM)
TASM: (+)
Очень хорошая поддержка структур и объединений
Мощный препроцессор и макросредства, лучше чем у других
Режим IDEAL, в котором лучше кодить, чем в MASM'е
С помощью например .486 легко писать под какой-нибудь определённый проц
TASM: (-)
Работает только под DOS или WINDOWS
нельзя писать под другие платформы
не поддерживает многомерные массивы
не поддерживает fastcall функции
трудности с написанием Boot сектора
Последняя доступная в сети версия - 5.3 поддерживает только Pentium pro
Нет нормальных include файлов для Windows
В режиме IDEAL под WIndows нельзя напрямую указать тип в секциях данных и неинициализированных данных(можно только db, dw, dd)
сложно использовать 32-битный бинарный формат
MASM: (+)
Доступна последняя версия 7.0, которая поддерживает все инструкции Intel
Хорошая поддержка макросов, структур, массивов и объединений
Также можно писать под какой-нибудь определённый процессор
Есть много средств, упрощающих разработку под Windows
MASM: (-)
Заточен только под DOS/WINDOWS, нельзя ничего делать под другие OS
Не поддерживает многомерных массивов, ни Fastcall функций
Также сложно писать Boot секторы и бинарные 32-битные файлы
NASM: (+)
Многоплатформенный - позволяет писать под DOS, WINDOWS и LINUX
Легко писать любые бинарные файлы
NASM: (-)
Нельзя задать процессор
Нет поддержки структур и массивов
нет встроенной поддержки вызовов функций stdcall и fastcall
не запоминает размерность переменных
только двухпроходной
Неудобно писать под Windows
FASM: (+)
Также многоплатформенный и позволяет легко писать бинарные файлы
Часто обновляется
Есть GUI версия под Windows
FASM: (-)
Нельзя задавать процессор
плохая поддержка структур
нет встроенный поддржки вызова stdcall и fastcall функций
Не запоминает размерность переменных
Нет Include файлов для Windows
Так вот, я предлагаю создать компилятор, который будет иметь все эти приемущества и не иметь этих недостатков. Кто-нибудь поддержит?
Очень хорошая мысль. А какие у тебя есть мысли по поводу реализации?
Про gas... Сомневаюсь, что на нём можно например под Windows писать, а я говорил о полность универсальном компиляторе. Т.е. где можно добавить любой выходной формат, например шаблонный файл сделать, чтобы output по нему и создавался.
Смесь асма и C++? Конечно можно, только не использовать полностью синтаксис C(ну типа операторы switch, for). И поддержку объектов надо тоде сделать, а также пространства имён. А в макроопределениях, и других фигнях, где препроцессор используется можно сделать чисто C-синтаксис, что будет гораздо удобнее, чем макроязык TASM. Если кто хочет поучавствовать, то сначала надо решится на чём писать. Есть два варианта - асм и Borland C++Builder, у меня больше ничего нет. На асме может показаться трудно, но весь FASM написан именно на нём. Я больше склоняюсь к тому, что писать надо на асме(TASM), т.к. здесь размер и быстродействие будет иметь значение.
Про gas... Сомневаюсь, что на нём можно например под Windows писать, а я говорил о полность универсальном компиляторе. Т.е. где можно добавить любой выходной формат, например шаблонный файл сделать, чтобы output по нему и создавался.
Ну gcc под Windows пашет? Пашет. => gas тоже пашет, поскольку без него не пахал бы gcc :). Ну конечно повозиться там придется, cygwin может поставить... А 100% кросс-платформенности и не бывает. В gas она 99% :) И вобще, товарищи программисты, переходите на Linux. Вы поймете, сколько времени вы потратили зря, сидя в Windows :). А если ты имел ввиду писать проги для Windows (с gui), то это, извините, извращение. На асме надо бутсекторы да критические участки кода писАть. 80% времени выполняется 20% кода. А в большинстве случаев даже 90%/10%.
... на асме компилятор писать? Ишшо один Mitja Gladkih? :) В общем не страдайте фигней, а давайте лучше сделаем такую вещь: интерпретатор асма :) Я серъезно. Например вот так это будет выглядеть:
EAX: 0x0000000
EBX: 0x4582455
.... и т.д.
i386vm> mov $1, %eax
i386vm> printregs
EAX: 0x0000001
....
В общем для обучения асму пойдет. У кого какие предложения?
Я больше склоняюсь к тому, что писать надо на асме(TASM), т.к. здесь размер и быстродействие будет иметь значение.
Вот именно потому что имеет значение быстродействие, писать нужно на Си (если все-таки решитесь).. Но только не на борланде :). А размер... разница в пару кб ничего не решает.
Я вот тут подумал и решил, что может быть полезно написать новый компилятор асма. Может кого то устраивают существующие, но я попробую сейчас что-нибудь сказать(TASM, MASM, NASM, FASM)
TASM: (+)
Очень хорошая поддержка структур и объединений
Мощный препроцессор и макросредства, лучше чем у других
Режим IDEAL, в котором лучше кодить, чем в MASM'е
С помощью например .486 легко писать под какой-нибудь определённый проц
TASM: (-)
Работает только под DOS или WINDOWS
нельзя писать под другие платформы
не поддерживает многомерные массивы
не поддерживает fastcall функции
трудности с написанием Boot сектора
Последняя доступная в сети версия - 5.3 поддерживает только Pentium pro
Нет нормальных include файлов для Windows
В режиме IDEAL под WIndows нельзя напрямую указать тип в секциях данных и неинициализированных данных(можно только db, dw, dd)
сложно использовать 32-битный бинарный формат
MASM: (+)
Доступна последняя версия 7.0, которая поддерживает все инструкции Intel
Хорошая поддержка макросов, структур, массивов и объединений
Также можно писать под какой-нибудь определённый процессор
Есть много средств, упрощающих разработку под Windows
MASM: (-)
Заточен только под DOS/WINDOWS, нельзя ничего делать под другие OS
Не поддерживает многомерных массивов, ни Fastcall функций
Также сложно писать Boot секторы и бинарные 32-битные файлы
NASM: (+)
Многоплатформенный - позволяет писать под DOS, WINDOWS и LINUX
Легко писать любые бинарные файлы
NASM: (-)
Нельзя задать процессор
Нет поддержки структур и массивов
нет встроенной поддержки вызовов функций stdcall и fastcall
не запоминает размерность переменных
только двухпроходной
Неудобно писать под Windows
FASM: (+)
Также многоплатформенный и позволяет легко писать бинарные файлы
Часто обновляется
Есть GUI версия под Windows
FASM: (-)
Нельзя задавать процессор
плохая поддержка структур
нет встроенный поддржки вызова stdcall и fastcall функций
Не запоминает размерность переменных
Нет Include файлов для Windows
Так вот, я предлагаю создать компилятор, который будет иметь все эти приемущества и не иметь этих недостатков. Кто-нибудь поддержит?
Гы :). Давайте поговорим о ТАСМЕ :). Ну начнем с того, что тасм еще и объекты поддерживает, т.е. асм++ уже есть :). Далее, насчет многомерных массивов... А другие поддерживают? Просто я незнаю, извините уж. Зато можно использовать вложенные структуры или адресоваться к ним через регистры (даже например так: (Descriptor eax+4*ebx+offset).limit0_15 Насчет фасткола, это просто очень легко сделать через макросы (ну просто очень просто) :). Насчет бута... Ну это может быть. Кстати, странно, я всегда думал, что версия 5.3 и Pentium III поддерживает... Может я опять ошибаюсь :). Насчет include-ов, ну это смотря где искать... Хотя эти инклуды мне кажеться только у Майка и есть. Да и на асме писать под винду - конкретный мазохизм :). Да и быстродействия не получишь...
Далее писать этот компилятор можно и даже нужно на Си. На любом Си. Хоть на Борланде... Главное, чтоб выходной код был крутой (я имею ввиду код программы на асме), ничего лишнего. Быстродействие, если учитывать мощность современных процов, особое значение не имеет. Кстати, и не думайте, что это просто - это очень не просто. Во-первых, если вы хотите делать мощные препроцессор и макросы, то это не так просто запрограммировать; во-вторых, компилятор должен не просто тупо подставлять опкоды, а и выбирать самые подходящие и короткие варианты. Дали бы нам исходники TASM-а :)...
Гы :). Давайте поговорим о ТАСМЕ :). Ну начнем с того, что тасм еще и объекты поддерживает, т.е. асм++ уже есть :). Далее, насчет многомерных массивов... А другие поддерживают? Просто я незнаю, извините уж. Зато можно использовать вложенные структуры или адресоваться к ним через регистры (даже например так: (Descriptor eax+4*ebx+offset).limit0_15 Насчет фасткола, это просто очень легко сделать через макросы (ну просто очень просто) :). Насчет бута... Ну это может быть. Кстати, странно, я всегда думал, что версия 5.3 и Pentium III поддерживает... Может я опять ошибаюсь :). Насчет include-ов, ну это смотря где искать... Хотя эти инклуды мне кажеться только у Майка и есть. Да и на асме писать под винду - конкретный мазохизм :). Да и быстродействия не получишь...
Далее писать этот компилятор можно и даже нужно на Си. На любом Си. Хоть на Борланде... Главное, чтоб выходной код был крутой (я имею ввиду код программы на асме), ничего лишнего. Быстродействие, если учитывать мощность современных процов, особое значение не имеет. Кстати, и не думайте, что это просто - это очень не просто. Во-первых, если вы хотите делать мощные препроцессор и макросы, то это не так просто запрограммировать; во-вторых, компилятор должен не просто тупо подставлять опкоды, а и выбирать самые подходящие и короткие варианты. Дали бы нам исходники TASM-а :)...
Хм а разве одна команда != одна последовательность байтов? Поправьте меня, если я не прав (с примером если можно :))
Хм а разве одна команда != одна последовательность байтов? Поправьте меня, если я не прав (с примером если можно :))
Поправляю: push 0 может быть 5 байт, а может быть 2. Просто есть push imm32 и push imm8. Таких ещё много.
Я предложил Borland, т.к. нет у меня других компиляторов. Можно будет достать. Также многие говорят, что писать компилятор на асме, как и писать GUI приложения - извращение. Но FASM - полностью написан на асме, даже его GUI версия. Там есть его исходники. Так кто-нибудь хочет этот компилятор написать?
Поправляю: push 0 может быть 5 байт, а может быть 2. Просто есть push imm32 и push imm8. Таких ещё много.
Я предложил Borland, т.к. нет у меня других компиляторов. Можно будет достать. Также многие говорят, что писать компилятор на асме, как и писать GUI приложения - извращение. Но FASM - полностью написан на асме, даже его GUI версия. Там есть его исходники. Так кто-нибудь хочет этот компилятор написать?
А мне больше нравится синтаксис AT&T, там нет таких неопределенностей, есть pushb 0, pushw 0 и pushl 0, и во многом он мне кажется логичнее интеловского. В асме вобще вся оптимизация должна оставаться кодеру. Типа сам выбрал :).
А FASM что, лучший пример для подражания? :)
А мне больше нравится синтаксис AT&T, там нет таких неопределенностей, есть pushb 0, pushw 0 и pushl 0, и во многом он мне кажется логичнее интеловского. В асме вобще вся оптимизация должна оставаться кодеру. Типа сам выбрал :).
А FASM что, лучший пример для подражания? :)
Упс.. ашипочка :) конечно же, pushb $0, pushw $0 и pushl $0.
Мне кажется, что это должен быть с++ но с возможностью самому выбирать как, через что и когда передавать параметры в функции. где сохранять регистры а где нет. Т.е. немного принизить (сделать более низкоуровневым) с++. В общем это должен быть с++ с некоторыми изменениями (мне так кажется :) )
Возможно даже чтобы он компилил и с++ и асм (например по расширению) и смешаный код (выбрасть один по умолчению, а второй во вставках типа асм{...} или с++{...} ).
Поддержка объектов в тасме недостаточна и не удобна, хотя структуры на уровне.
Писать я могу на асме или на вижал с++. Борланда у меня нет. Но мне кажется на компиляторах под винды мультиосного не получится, хотя...
В общем мне хочется просто написать самому компилятор. Я за!
З.Ы. Только не надо в меня кидатся тухлыми помидорами :)
Если уметь писать на асме, то это всё будет не сложно. К тому же если писать под Windows на C++, то под Linux всё равно придёться код переделывать.
Сначала надо создать библиотеку с часто вызываемыми функциями - для работы со строками, такими, как определение длины и копирование(ну это само собой), поиском подстрок, выделением подстрок, только с параметром-адресом памяти, куда строку копировать. Почему я не хочу использовать строковые функции Windows? А вы на них под отладчиком посмотрите, вам тоже сразу расхочется!
И всё же писать так, чтобы компилятор полноценно обрабатывал код C++ не имеет смысла, всё равно лучше чем существующие(хотя бы Intel C++ или gcc) не получится.
"Хотя бы" gcc ? :) ну-ну.
Надо писать асм, но с поддержкой таких штук, как многомерные массивы, перечисления, структуры, в том числе и вложенные, объекты, пространства имён, полная поддержкой UNICODE, препроцессор с синтаксисом C++, встроенной поддержекой функций stdcall, cdecl и fastcall, указанием типа процессора, чтобы было легко писать 16 и 32-битные бинарные файлы, а также программы и библиотеки для всех популярных ОС - Windows, DOS, Linux(и ему подобных). Вот так.
Это все полный бред. Сорри. Но из попытки напихать низкоуровневый язык ВУ-фичами ничего не выйдет. И еще. Нет никакого "препроцессора с синтаксисом C++". И неправильно называть Unix-подобные оси Linux-подобными.
Если уметь писать на асме, то это всё будет не сложно. К тому же если писать под Windows на C++, то под Linux всё равно придёться код переделывать.
Если писать на чистом C++, не придется. Если ты про графику, то есть кросс-платформенные графические библиотеки, и если не писать под MFC, переделывать опять не придется. Абыдна, да? :) А вот если писать на асме, и вдруг придется портировать прогу на другой проц, то придется все писать с нуля.
Сначала надо создать библиотеку с часто вызываемыми функциями - для работы со строками, такими, как определение длины и копирование(ну это само собой), поиском подстрок, выделением подстрок, только с параметром-адресом памяти, куда строку копировать. Почему я не хочу использовать строковые функции Windows? А вы на них под отладчиком посмотрите, вам тоже сразу расхочется!
В общем не понятно, зачем это все асму. Попытка повернуть время вспять? :)
... на асме компилятор писать? Ишшо один Mitja Gladkih? :) В общем не страдайте фигней, а давайте лучше сделаем такую вещь: интерпретатор асма :) Я серъезно. Например вот так это будет выглядеть:
EAX: 0x0000000
EBX: 0x4582455
.... и т.д.
i386vm> mov $1, %eax
i386vm> printregs
EAX: 0x0000001
....
В общем для обучения асму пойдет. У кого какие предложения?
Кстати отличная идея! И не слишком сложна в реализации. А вот и мое первое предложение:
#include "asmvm.h"
%}
%%
\n return TOKEN_NEWLINE;
\$[0-9xA-Fa-f]+ return TOKEN_NUMBER;
[A-Za-z0-9_]+: return TOKEN_LABEL;
\%[A-Za-z0-9]+ return TOKEN_REGISTER;
[A-Za-z0-9]+ return TOKEN_OPERATION;
\.[A-Za-z0-9_]+ return TOKEN_DIRECTIVE;
\".+\" return TOKEN_STRING;
\[.+\] return TOKEN_MEMORY;
\;.+ /* skip comments */;
[ ]+ /* skip whitespaces */;
[\t]+ /*skip tabs */;
<<EOF>> return TOKEN_EOF;
%%
Лексический анализатор готов :)
Я вот тут подумал и решил, что может быть полезно написать новый компилятор асма. Может кого то устраивают существующие, но я попробую сейчас что-нибудь сказать(TASM, MASM, NASM, FASM)
Так вот, я предлагаю создать компилятор, который будет иметь все эти приемущества и не иметь этих недостатков. Кто-нибудь поддержит?
Товарищ, а ты слышал про Sphinx C-- и HLA (High Level Assembler) ?
Это все полный бред. Сорри. Но из попытки напихать низкоуровневый язык ВУ-фичами ничего не выйдет. И еще. Нет никакого "препроцессора с синтаксисом C++". И неправильно называть Unix-подобные оси Linux-подобными.
Почему интересно нельзя например пространства имён добавить? А то например хочется внутри какой-нибудь процедуры назвать как-нибудь переменную, а она уже есть - облом. С пространствами будет удобнее. А с объектами - труднее - здесь надо думать, как лучше сделать. Встроенная поддержка stdcall, cdecl и fastcall - это тоже бред? Не зннаю, вот TASM и MASM поддерживают stdcall, гораздо удобнее так работать. Теперь про препроцессор с синтаксисом C++. Ты правильно сказал, что его нет, но сделать можно. Посмотри на большие макросы в TASM'е - совсем удобный синтаксис? Если он будет как в C++, макросы делать будет легче. А поддержка UNICODE сейчас для компилятора необходима, потому что от ANSI постепенно уходят. Вот такой вот бред.
Если писать на чистом C++, не придется. Если ты про графику, то есть кросс-платформенные графические библиотеки, и если не писать под MFC, переделывать опять не придется. Абыдна, да? :) А вот если писать на асме, и вдруг придется портировать прогу на другой проц, то придется все писать с нуля.
MFC - отстой, не знаю, кто там это использует. Если писать под GUI на асме, то пользоваться лучше чистым API. То что нет IDE хорошего - это другое дело. Вот легко ли было на C++ на чистом API писать? Вот так вот. И если на асме написано, то чтобы перенести на другую ОС, то большинство кода менять не надо. Менять надо только вызовы функций ОС.
В общем не понятно, зачем это все асму. Попытка повернуть время вспять? :)
Просто в Windows строковые функции вообще ни хрена не оптимизированы, а их при активной работе столько вызывают... Так наверно со всем API, понятно почему тормозит.
Почему интересно нельзя например пространства имён добавить? А то например хочется внутри какой-нибудь процедуры назвать как-нибудь переменную, а она уже есть - облом. С пространствами будет удобнее. А с объектами - труднее - здесь надо думать, как лучше сделать. Встроенная поддержка stdcall, cdecl и fastcall - это тоже бред? Не зннаю, вот TASM и MASM поддерживают stdcall, гораздо удобнее так работать. Теперь про препроцессор с синтаксисом C++. Ты правильно сказал, что его нет, но сделать можно. Посмотри на большие макросы в TASM'е - совсем удобный синтаксис? Если он будет как в C++, макросы делать будет легче. А поддержка UNICODE сейчас для компилятора необходима, потому что от ANSI постепенно уходят. Вот такой вот бред.
Добавить можно. Я просто не вижу смсыла делать это все для асма. Есть же ЯВУ, где все это реализовано. Зачем асм для таких целей? Про препроцессор я хотел сказать только что нет препроцессора С++ но есть препроцессор С :). В С++ он такой же. Называйте вещи своими именами. Кстати в gas он используется, и это плюс.
MFC - отстой, не знаю, кто там это использует. Если писать под GUI на асме, то пользоваться лучше чистым API. То что нет IDE хорошего - это другое дело. Вот легко ли было на C++ на чистом API писать? Вот так вот. И если на асме написано, то чтобы перенести на другую ОС, то большинство кода менять не надо. Менять надо только вызовы функций ОС.
MFC оно конечно отстой, только ведь используют. Полно программ (не самых худших) на нем написано.
Я не понял какая связь между наличием IDE и написанием проги с использованием только API.
Так это на любом языке менять надо только вызовы функций ОС. А если эти вызовы там в корне другие? Или аналогичных вобще нет? А при переносе на другую архитектуру на асме _весь_ код переписывать придется.
Просто в Windows строковые функции вообще ни хрена не оптимизированы, а их при активной работе столько вызывают... Так наверно со всем API, понятно почему тормозит.
Последнее мое предложение относилось к посту в целом. А что значит "строковые функции Windows"? О чем речь?
Про препроцессор я хотел сказать только что нет препроцессора С++ но есть препроцессор С :). В С++ он такой же. Называйте вещи своими именами. Кстати в gas он используется, и это плюс.
А я его с NASM'ом использую. И ничего, держится :) А вообще для gas'а cpp не родной препроцессор, а родной - GASP
Теперь про препроцессор с синтаксисом C++. Ты правильно сказал, что его нет, но сделать можно. Посмотри на большие макросы в TASM'е - совсем удобный синтаксис? Если он будет как в C++, макросы делать будет легче.
Ну и кто тебе мешает использовать другой препроцессор? Да хоть де-фактовый юниксовый M4?
А я его с NASM'ом использую. И ничего, держится :) А вообще для gas'а cpp не родной препроцессор, а родной - GASP
Я в курсе, но все равно все .S через cpp прогоняются :) А вот .s - нет.
http://www.lowlevel.ru/asmvm/asmvm.tar.gz
Работает в интерактивном режиме и воспринимает команды mov, and, or, xor, xchg и bswap. В качестве операндов можно использовать регистры общего назначения и непосредственные значения.
Команда .printregs показывает регистры и флаги.
Ну так что, товарищи кодеры, интерпретатор асма будем лепить? Я тут начал уже, вот исходники:
http://www.lowlevel.ru/asmvm/asmvm.tar.gz
Работает в интерактивном режиме и воспринимает команды mov, and, or, xor, xchg и bswap. В качестве операндов можно использовать регистры общего назначения и непосредственные значения.
Команда .printregs показывает регистры и флаги.
Начало положено, так сказать :)
Маленькие замечания по стилю (чур без обид!):
Отступы слишком маленькие, давай по 8 символов (1 таб)?
Еще хорошы бы пробелов побольше, например перед и после операторов, и перед '{'
И отсутствие комментариев. В общем если не возражаешь, я это все пофиксю, ок? :) И комментарии добавлю.
PS. Глядишь, ненароком полный эмулятор i386 вырисуется :D
Давай мыло, вот мое:
omc at nm dot ru
Начало положено, так сказать :)
Маленькие замечания по стилю (чур без обид!):
Отступы слишком маленькие, давай по 8 символов (1 таб)?
Еще хорошы бы пробелов побольше, например перед и после операторов, и перед '{'
И отсутствие комментариев. В общем если не возражаешь, я это все пофиксю, ок? :) И комментарии добавлю.
Ок. Напомни только, плиз, как в емаксе отступ поставить 8 символов :)
PS. Глядишь, ненароком полный эмулятор i386 вырисуется :D
Кстати, была у меня в детстве такая идея, можешь посмотреть, что я тогда накодил (нужны ncurses):
http://www.lowlevel.ru/asmvm/vs001.tar.gz
Кстати, readline туда бы прикрутить не мешало... но это в будущем :))
readline - это что такое?
Давай мыло, вот мое:
omc at nm dot ru
Мое: webmaster, собака, lowlevel, точка, ru
Вот тут уже интерпретатор кодить собираются...
Да не только собираются, а уже вовсю кодят :)
И что уже имеется?
...прошло 2 года, 8 месяцев и 18 дней...
И что уже имеется?
Да ничего собственно и не имеется, имеющиеся ассемблеры всё-таки устраивают :)