eXeL@B —› Программирование —› Ассемблер и поддержка КОИ-8 |
Посл.ответ | Сообщение |
|
Создано: 03 марта 2013 22:37 · Личное сообщение · #1 Всем привет. Пытаюсь разобраться как ассемблер узнаёт о он имеет дело с кодом ASCII и как можно научить его понимать КОИ-8? Если открыть в дебагере какой либо ехе файл - смещение 40 показывает ASCII "PE" // PE signature (PE) и далее например в блокноте.ехе - ASCII предворяет каждую строку типа string например : " ASCII "GetSaveFileNameW" " Насколько я знаю КОИ-8 является расширением ASCII и использует 8-й бит для кодирования символов Кириллицы. Означает ли это, что если поменять в ехе того-же блокнота ASCII на KOI8-R (скажем: KOI8-R "GetSaveFileNameW" ) программа будет функционировать как ей и положено и кроме всего прочего научится понимать Кириллицу на уровне ассемблерного кода? Т.е. я смогу делать вызов функции с именем на русском, в теории? | Сообщение посчитали полезным: ximerus |
|
Создано: 03 марта 2013 22:44 · Личное сообщение · #2 |
|
Создано: 03 марта 2013 22:52 · Личное сообщение · #3 |
|
Создано: 04 марта 2013 00:59 · Поправил: astronm · Личное сообщение · #4 Archer пишет: Ассемблер и кодировка не связаны. Ну т.е. вообще никак не связаны. В принципе никак не связаны. Я хотел попробовать перевести на русский один из open-source (самых простых) ассемблерных компиляторов , просто для того, чтобы разобраться в процессе. Соответственно ADD, SUB, MUL, DIV будут ,скажем - ДОБ, ВЫЧ, УМН, ДЕЛ , OR, XOR, AND, NOT - ИЛИ, НИЛИ, И, НЕ . В этом случае я должен указать компилятору( не знаю ещё как ), что кодовая страница KOI8-R , а не ASCII. Если я правильно понимаю,стандартный дебагер будет выводить ADD, SUB, MUL, DIV , а не ДОБ, ВЫЧ, УМН, ДЕЛ , наверное, машинный код по умолчанию конвертируется в ASCII Ассемблер , но вот переменные типа string должны будут выглядеть следующим образом:" KOI8-R "GetSaveFileNameW" " ? Если только информация о текущей кодовой странице где либо хранится в бинарнике. Или вот ещё пример - файл ресурсов(если они в KOI8-R ) или скажем строковые данные ( например меню в блокноте, если оно хранится не в API/ dll , а прописано в коде ) Вот к примеру в том же блокноте присутствует код где явно указывается кодировка, кроме ASCII : CPU Disasm Address Hex dump Command Comments 01006FDD |. BF 38180001 MOV EDI,01001838 ; UNICODE " " (в данном случае возврат каретки ? ) откуда декомпилятор (Олли) знает , что это UNICODE ? Затем если принципиально ничего кроме ASCII в API не возможно, зачем явно указывать на ASCII ? |
|
Создано: 04 марта 2013 02:15 · Личное сообщение · #5 |
|
Создано: 04 марта 2013 02:36 · Личное сообщение · #6 |
|
Создано: 04 марта 2013 03:06 · Поправил: Dart Raiden · Личное сообщение · #7 |
|
Создано: 04 марта 2013 03:53 · Поправил: astronm · Личное сообщение · #8 hors пишет: Только непонятен смысл всего этого. Давайте назовём это "пробный шар" Предположим вы написали на ассемблере функцию, и назвали её не "print_string" а "печать_строки" . Далее , передаём эту функцию в "ВЫЗОВ печать_строки" , если у нас была-бы "call print_string" в ASCII проблем не будет , хуже если так : "call печать_строки" . Хочется понять, как ассемблер или "новый ЯП" ассемблерного типа должен работать(работает) с KOI8-R . Повторяюсь, откуда декомпилятор (Олли) знает ,что такое UNICODE и ASCII в бинарном коде? Если вин7 (не знаю насколько это реализовано) поддерживает UNICODE "из коробки" значит ли это , что (хотябы теоритически) можно написать API функцию "печать_строки" и соответственно вызвать её из ассемблера? Вот к примеру ,я попытался было переопределить тип в PowerShell и записать его в UNICODE , скажем "длинна" , так нет же, PowerShell упрямо выдаёт "??????" . Переопределить функцию в UNICODE , через алиас- пожалуйста, тип - уже нет. Я так понял, что XML файл в котором хранятся типы функций, по умолчанию сохраняется в ASCII . |
|
Создано: 04 марта 2013 06:56 · Личное сообщение · #9 |
|
Создано: 04 марта 2013 08:45 · Личное сообщение · #10 astronm пишет: Соответственно ADD, SUB, MUL, DIV будут ,скажем - ДОБ, ВЫЧ, УМН, ДЕЛ , OR, XOR, AND, NOT - ИЛИ, НИЛИ, И, НЕ . сделайте мне развидеть это ( | Сообщение посчитали полезным: Dart Sergius, yagello |
|
Создано: 04 марта 2013 09:45 · Личное сообщение · #11 astronm пишет: откуда декомпилятор (Олли) знает ,что такое UNICODE и ASCII в бинарном коде? Во-первых, это не декомпилятор, а отладчик. А имеется в виду, видимо, дизассемблер. Во-вторых, нигде в бинарнике никакая кодировка не хранится. В бинарнике лежат просто код и данные. Для кода вообще нет понятия кодировки, его процессор напрямую выполняет. Для данных кодировка задаётся окружением ОС, в зависимости от этого ОС тебе по-разному их покажет. А ANSI оно знает, потому что используется 1 байт на символ. UNICODE-2 байта на символ. И есть апи для определения типа текста. Так что это скорее тип и с кодировкой типа koi, cp и тд не связано. Настоятельно рекомендуется взять и почитать уже про кодировки. Что касается проекта, проще взять и на дефайнах накидать как в примере выше. Смысла никакого и работа рутинная, но если время девать некуда... З.Ы. Прям чую рождение нового ассемблера "Иммунитет" или "Болгенос". |
|
Создано: 04 марта 2013 17:05 · Поправил: astronm · Личное сообщение · #12 Archer пишет: А ANSI оно знает, потому что используется 1 байт на символ. UNICODE-2 байта на символ. Хорошо, уже теплее. Тоже понятно,что к осям привязка существует. А что если оси как таковой ещё нет, и ассемблер работает с процессором типа 6502 или наподобе? Archer пишет: Что касается проекта, проще взять и на дефайнах накидать как в примере выше. В примере выше , Вы не сможете написать так: #включить <ввпоток> использовать полеимён стд; <процедура> главная() ...... т.е. нужно перевести все header.c файлы и затем сделать так , чтобы компилятор это понимал ... |
|
Создано: 04 марта 2013 17:14 · Личное сообщение · #13 |
|
Создано: 04 марта 2013 17:20 · Поправил: astronm · Личное сообщение · #14 Vovan666 пишет: так противно читать цикл Внекрылова, с русской олькой Можно поподробнее? " Параноидального желания все и вся русифицировать" вроде нет, есть мысль попробовать "опустить планку" , того, что называется языковым барьером. Из моего опыта более 50% программистов после 30 всё ещё учат английский, какую полноценную творческую работу они могут выплолнять? Начать программировать без элементарного знания английского , опять же , не получится . Не совсем понятно, чем это программирование так особенно? Логика на уровне: играть в домино, могут только - люди говорящие по японски. |
|
Создано: 04 марта 2013 17:53 · Личное сообщение · #15 astronm пишет: В примере выше , Вы не сможете написать так Кое-где смогу. Везде не смогу. Если надо, чтоб везде, пиши препроцессор для парсинга русской тарабарщины. Либо сразу свой компилятор. astronm пишет: ассемблер работает с процессором типа 6502 Бери да смотри, как производится вывод на экран. Если не ОС это делает, то как минимум прошивка видеоконтроллера. Какие шрифты ей известны, те и выведет. И сильно сомневаюсь, что они с кодировками работают. Или следующий вопрос будет, что там нужно перепаять? Если программист не в состоянии к 30 годам язык выучить и переводчик он тоже не в состоянии осилить, чтобы хоть как-то смысл понять, пусть лучше идёт вагоны разгружает. Не вижу смысла опускать планку, ничего из него толкового в любом случае не выйдет. Или есть ожидание, что они не могут перевести только add и mov, а документацию магическим способом узнают? Коль делать нечего, начни с перевода документации, на ближайшие лет 50 хватит. |
|
Создано: 04 марта 2013 18:20 · Поправил: astronm · Личное сообщение · #16 Archer пишет: Если программист не в состоянии к 30 годам язык выучить И чёрт с ними , не в них дело, Вы сами , к примеру, если бы начали на год раньше, в рамках Вашего теперешнего возраста - понятно- ничего существенного, однако в контексте упущенных возможностей , сами знаете - "раньше - лучше". Archer пишет: Или следующий вопрос будет, что там нужно перепаять? |
|
Создано: 04 марта 2013 21:39 · Поправил: hors · Личное сообщение · #17 astronm пишет: Из моего опыта более 50% программистов после 30 всё ещё учат английский, какую полноценную творческую работу они могут выплолнять? Начать программировать без элементарного знания английского , опять же , не получится . Не совсем понятно, чем это программирование так особенно? Логика на уровне: играть в домино, могут только - люди говорящие по японски. Так уже есть языки программирования на русском, вот например А если Вы хотите перевести ассемблер, чтобы опустить планку, то это не сработает, так ассемблер сам по себе сложен для понимания и точно не подойдет людям, которые не понимают английский даже на уровне написания листинга программы. ----- http://ntinfo.biz |
|
Создано: 04 марта 2013 21:40 · Поправил: plutos · Личное сообщение · #18 |
|
Создано: 05 марта 2013 00:47 · Поправил: astronm · Личное сообщение · #19 hors пишет: А если Вы хотите перевести ассемблер, чтобы опустить планку, то это не сработает Может быть и нет, не всё сразу, но попробовать стоит , чтобы понять, что и как. Затем , для 6502, например , много всяких игр и проч. понаписано. Есть хорошие эмуляторы , схемотехника разжёвана до мелочей, документации - море. http://6502.org/ http://www.emuverse.ru/wiki/ Нужен опыт- "сын ошибок трудных." Понятно, я б с удовольствием взялся за компилятор для Raspberry PI http://www.raspberrypi.org/ , но увы, увы , в одиночку я это не осилю. Archer: пишет: Коль делать нечего, начни с перевода документации, на ближайшие лет 50 хватит. Ещё добавьте каждые 2 года новая ВС и MSDN , затем готовьте английскую грамматику - ЯП уже пытаются влезть в голову, домысливая Customers до Customer , Orders до Order , как это делает сейчас EF. "И Это только присказка, сказка впереди..." hors пишет: Так уже есть языки программирования на русском, вот например --> Link <-- Идея Глагола мне нравится, но начинать я думаю надо с компилятора. Почему компилятор - Бьерн Страуструп сказал - " Компилятор - твой лучший друг" |
|
Создано: 05 марта 2013 01:06 · Поправил: hors · Личное сообщение · #20 astronm пишет: Понятно, я б с удовольствием взялся за компилятор для Raspberry PI http://www.raspberrypi.org/ , но увы, увы , в одиночку я это не осилю. Осилите, если будете не изобретать велосипеды, а используете готовые решения, например для разбора синтаксиса. К примеру вот astronm пишет: Ещё добавьте каждые 2 года новая ВС и MSDN , затем готовьте английскую грамматику - ЯП уже пытаются влезть в голову, домысливая Customers до Customer , Orders до Order , как это делает сейчас EF. "И Это только присказка, сказка впереди..." Так Вы против английского языка по каким-то политическим соображениям? Это зря. И к здоровому патриотизму не имеет отношения. ----- http://ntinfo.biz |
|
Создано: 05 марта 2013 01:39 · Поправил: plutos · Личное сообщение · #21 plutos пишет: Коль делать нечего, начни с перевода документации, на ближайшие лет 50 хватит. это не я пишу, а Archer. (см. выше #15). О чем вообще вся эта тема? О том, что каждый сходит с ума по-своему? Так это не требует никаких доказательств. Каждый дроchит, как он хочет, давно известно. ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 05 марта 2013 02:55 · Поправил: astronm · Личное сообщение · #22 hors пишет: Так Вы против английского языка по каким-то политическим соображениям? Это зря. И к здоровому патриотизму не имеет отношения. Я не против, противоречия нет, когда то ,наверное, наступит день , когда естественные языки начнут "переводить" в машинные, в первую очередь это произойдёт с английским. Как бы отступление от темы - Вы знаете хоть 1 приличный распознаватель русского, наподобе Dragon Naturally Speaking? Последний существует с 1997 , Dragon NaturallySpeaking 11 is available in the following languages: English French German Italian Spanish Dutch Japanese (available as of September 2012) Насчёт Русского, было сказано - много буков и много слов, диагноз - неподдаются распознаванию.( ??? ) В тоже время в этом году выпустили Русский для AppleStore. Повторюсь , Бьерн Страуструп сказал - " Компилятор - твой лучший друг" Вот ссылка своего рода эксперимент на Хинди: http://hindawi.in/en_US/index.php . Индусы перевели всё под чистую в основных ЯП, оставив при этом GNU GCC как основной компилятор. Немного подробнее: Ими написан драйвер, который управляет процессом компиляции, вызавая различные фильтры и обработчики , аналогично тому , как это сделано в самом GCC, в следующей последовательности: 1)Исходный код в ISCII фильтруется в транслит Romenagri, 2)транслит Romenagri передают в компилятор ЯП для получения исходного кода GCC 3)компилятор ЯП Вызывает GCC или G++ соответственно. Обратную совместимось с ЯП (Assembly, BASIC, C, C++, FORTRAN, Pascal, LISP, Prolog, lex, and yacc ) делают через лексический анализ , таким образом код портируется в обе стороны ( Северо индусские наречия (около 10 штук) <-> английский ) без проблем. Далее они портировали ядро Линукс и FreeDOS . Затем , при помощи паяльника и какой то там матери , они сделали отображение шрифтов Хинди( и его вариантов ) в консолях и дисплеях терминалов. Ну и в конце концов допилили напильником шрифты PCL совместимых принтеров, ну и написали пару другую средств разработки с подсветкой синтаксиса . Делов то. Ах да, ещё про индийских роботов забыл. Всё это , за что-то около 3х лет + в пределах 10 разработчиков. Чего бояться то, никуда этот английский не денется, ещё и лучше будет ;) hors пишет: Осилите, если будете не изобретать велосипеды, а используете готовые решения, например для разбора синтаксиса. К примеру вот --> Link <-- Спасибо , интересная штука. |
|
Создано: 05 марта 2013 09:43 · Личное сообщение · #23 |
|
Создано: 05 марта 2013 15:59 · Личное сообщение · #24 |
|
Создано: 05 марта 2013 16:13 · Личное сообщение · #25 |
eXeL@B —› Программирование —› Ассемблер и поддержка КОИ-8 |
Эта тема закрыта. Ответы больше не принимаются. |