OSDev
http://osdev.su/

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

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

Chizh

Цитата:
Тогда комментарии будут перегружены технической информацией


Они для того и нужны, чтобы содержать техническую информацию. Не стихи же там писать? ;)

Цитата:
Именно из-за повышенной сложности программирования, я бы "думающим" транслятором не стал пренебрегать


А) Откуда повышенная сложность программирования? Чем она сложнее, чем 30 лет назад?
Б) И о чём же транслятор ассемблера должен думать?

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

Цитата:
А) Откуда повышенная сложность программирования? Чем она сложнее, чем 30 лет назад?
Б) И о чём же транслятор ассемблера должен думать?
//SII 1.12.2007, 02:53

Это я про сам Ассемблер, в том смысле, что программы на нём сложнее любого другого ЯП. Хоть 30 лет назад, хоть сейчас.

В идеале, из синтаксиса языка должно быть ясно видно (как программисту так и компилятору), что именно в конечном итоге вычисляется. В данном же виде строения программ, результатом работы каждой команды является лишь какие-то изменения каких-то регистров. Программист должен постоянно анализировать взаимосвязь изменений регистров, чтобы представить, что же в конечном итоге получится. При указании типа конечного результата, компилятор может проследить ход вычислений, и выявить например логическую целостность результата (например тип позврата процедуры dword, а код вычисляет и возвращает только byte, оставляя старшие биты неопределёнными), или например перед командой "div ebx" регистры eax и ebx содержат dword числа, а edx содержит float, ptr или null (т.е. ни какой явной загрузки значения в регистр не было), получится что называется type mismatch.

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

Chizh

Теоретически контроль типов (а не только размеров операндов) в ассемблере сделать можно, только вот пользоваться им никто не будет: кому нужна гора лишней писанины? Ведь, считай, чуть ли не на каждую загрузку регистра потребуется писать, что было загружено.

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

Нет, типы данных должны быть описаны лишь у входных и выходных параметров процедур (само декларирование типов в языке уже есть), а компилятор должен проследить всю цепочку обработки данных, все регистровые зависимости, и выдавать предупреждения такие же как в Си. Т.е. в общем даже не обязательно считать их фатальными ошибками, достаточно генерации предупреждений. Нормальные программисты и так интерпретируют предупреждения как потенциальные ошибки.

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

Цитата:
Chizh

Теоретически контроль типов (а не только размеров операндов) в ассемблере сделать можно, только вот пользоваться им никто не будет: кому нужна гора лишней писанины? Ведь, считай, чуть ли не на каждую загрузку регистра потребуется писать, что было загружено.
//SII 2.12.2007, 06:28

Когда ещё карточки были, программисты читали не свой исходняк, а распечатку компилятора со всякой дополнительной инфой. Так вот, оболочка разработки может показывать что написанная команда фактически делает и (по требованию?) добавлять это в виде комментария. Заодно и типы показывать.

А вот как защититься от описок и ошибок типа "забыл об этом подумать"? Человек - в принципе не надёжен. Программисты получше, но и они... Качество кода как не повышай, а ошибки всё равно будут. Как найти ошибку приведшую к сбою произошедшему через несколько тысяч комманд?

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

Chizh

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

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

Вот встретил описание параметров на практике. Уже почти то, что надо http://wasm.ru/article.php?article=green2red03
Код:
SEHHandler proc uses edx pExcept:DWORD, pFrame:DWORD, pContext:DWORD, pDispatch:DWORD
       mov edx,pFrame
 assume edx:ptr SEH
     mov eax,pContext
       assume eax:ptr CONTEXT
 push [edx].SafeOffset
  pop [eax].regEip
       push [edx].PrevEsp
     pop [eax].regEsp
       push [edx].PrevEbp
     pop [eax].regEbp
       invoke MessageBox,0,offset seh,offset seh,0
    mov eax,ExceptionContinueExecution
     ret
SEHHandler endp

Синтаксис подразумевает и объявление локальных (стековых) переменных, только они здесь на используются. Интересно, из местных профи кто-нибудь так процедуры описывает?

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

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

Chizh

В этом примере нет описания типов параметров, есть только указание на их размер, и ничего более.

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

Ну, будем считать их примитивными типами :) Размер тоже к типу относится, поскольку требует применения разнотипных ассемблерных инструкций.

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

Chizh

Размер-то я точно контролировать буду ;) Я насчёт типизации в смысле ЯВУ очень не уверен, хотя на досуге подумаю.

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

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