OSDev

для всех
Текущее время: 01 май 2024, 14:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: 27 ноя 2007, 17:13 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
А что нового будет в твоём Ассемблере?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 ноя 2007, 19:44 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Chizh

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2007, 03:09 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
А мне казалось, что masm32 наворотили дальше некуда. Ты говоришь про поддержку CPU команд, или синтаксис?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2007, 07:57 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Chizh

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


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

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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2007, 12:14 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Цитата:
Не удастся: сама сущность ассемблера -- отсутствие типов, есть только длины операндов.
//SII 28.11.2007, 07:57

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2007, 12:38 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Chizh

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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2007, 13:20 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2007, 13:29 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Chizh

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


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


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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2007, 15:37 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 ноя 2007, 16:07 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Chizh

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


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

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


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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB