OSDev
http://osdev.su/

Проблемы начинающего осеписателя
http://osdev.su/viewtopic.php?f=5&t=165
Страница 3 из 5

Автор:  Himik [ 27 ноя 2007, 17:13 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

А что нового будет в твоём Ассемблере?

Автор:  SII [ 27 ноя 2007, 19:44 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

Chizh

Новое -- это хорошо забытое старое ;) Так что ничего принципиально нового не предвидится. Просто полноценный макроассемблер, поддерживающий всё и вся, что мне покажется полезным. В частности, структуры, из-за чего я отказался от использования NASM, и поддержку всех возможных видов команд, чего нет в MASM. FASM я тоже смотрел, но он мне просто не понравился, и всё тут :)

Кстати, принимаются пожелания и предложения :) Правда, без гарантии, что они будут учтены -- всё ж я асм под себя делаю, а не для "широких слоёв общественности" (хотя, есно, я его выложу, когда заработает более-менее).

Автор:  Himik [ 28 ноя 2007, 03:09 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

А мне казалось, что masm32 наворотили дальше некуда. Ты говоришь про поддержку CPU команд, или синтаксис?

У меня была одна идея. Можно ввести типизацию. Например в процедуре добавить описание типа каждого передаваемого и возвращаемого параметра, так же как в Си.

Автор:  SII [ 28 ноя 2007, 07:57 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

Chizh

Цитата:
А мне казалось, что masm32 наворотили дальше некуда


Что наворотили -- это да, но это не значит, что это есть хорошо ;) В то же время некоторые вещи там так и не сделали. Например, он не понимает инструкций вида JMP 10h:1000h -- ну нет такой команды, и всё тут, и приходится подобные переходы определять прямо в машинном коде (хорошо хоть, что они требуются редко).

Цитата:
Можно ввести типизацию


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

Автор:  Himik [ 28 ноя 2007, 12:14 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

Цитата:
Не удастся: сама сущность ассемблера -- отсутствие типов, есть только длины операндов.
//SII 28.11.2007, 07:57

Но это не мешает уровне языка оперировать мета-информацией. В процессоре отсутствует и понятие объектов, структур, но на языковом уровне они существуют в виде мета-информации. С типами такая же история.

Автор:  SII [ 28 ноя 2007, 12:38 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

Chizh

Цитата:
Но это не мешает уровне языка оперировать мета-информацией. В процессоре отсутствует и понятие объектов, структур, но на языковом уровне они существуют в виде мета-информации. С типами такая же история


Да, в принципе можно приписать переменным (областям памяти) и параметрам процедур конкретные типы, только вот проконтролировать правильность их использования всё равно не удастся, кроме как по размеру: всё равно система команд IA-32 не поддерживает операции "память-память", а потому ничто не мешает программисту сложить символ с указателем -- всё равно операцию придётся производить через регистры, которым приписывать и заменять типы замучаешься. При более "здравой" системе команд от типизации мог бы быть определённый смысл.

Автор:  Himik [ 28 ноя 2007, 13:20 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

Надо описывать тип каждого регистра, в этом весь смысл. Потому что, всё что не описано явно, то приходится додумывать в голове, анализируя код. Уйти от этого и есть основная идея. Например, не спроста в синтаксисе AT&T у каждой команды приписывается в конце буква, уточняющая размер.
Хотя согласен, что дела с типизацией CPU "на грани фола". Но если бы было всё просто, то было бы не интересно :)

Автор:  SII [ 28 ноя 2007, 13:29 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

Chizh

Цитата:
Надо описывать тип каждого регистра, в этом весь смысл


Никто не будет этого делать: логические типы величин, находящихся в регистрах, меняются очень часто, и при "типизации" вся программа будет забита директивами переопределения типов, что лишь ухудшит читаемость.


Цитата:
не спроста в синтаксисе AT&T у каждой команды приписывается в конце буква, уточняющая размер


Думаю, это неверно: синтаксис AT&T отнюдь не нов, ту же принципиальную нотацию (приёмник справа, мнемоника задаёт размер операнда) используют ассемблеры DECовских машин (во всяком случае, PDP-11 и VAX-11). Но ни о какой типизации там и речи нет, команда задаёт только размер данных.

Автор:  Himik [ 28 ноя 2007, 15:37 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

Типы меняются не чаще, чем в других ЯП. По поводу читаемости: я исхожу из того, что она нулевая, и хуже ей не сделается :) А вообще многие идеи можно взять из Watcom C, там очень здорово описываются ассемблерные вставки с помощью #pragma aux. Каждая ассемблерная вставка включает в себя объявление функции в Сишном синтаксисе (с типами параметров); регистры параметров; регистры возврата; модифицирыемые регистры. Т.е. всё, что нужно для типобезопасного программирования :)

Автор:  SII [ 28 ноя 2007, 16:07 ]
Заголовок сообщения:  Re: Проблемы начинающего осеписателя

Chizh

Цитата:
Типы меняются не чаще, чем в других ЯП


Ну, это уже полная глупость. В ЯВУ типы вообще не меняются. Если переменная объявлена, как char, -- она таковой и останется (только не надо про слабый контроль типов в Си -- это один из самых страшных "достоинств" сего языка, в нормальных языках контроль типов достаточно жёсткий, и складывать символы с вещественными числами там не получится). А типы величин в регистрах меняются постоянно: это тебе и символы, и целые числа, и указатели на различные структуры данных, и просто куски данных каких-то крупных типов...

Цитата:
А вообще многие идеи можно взять из Watcom C


Надо, наверное, как-нибудь глянуть...

Страница 3 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/