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/ |