Сейчас на форуме: zds, UniSoft (+5 невидимых)

 eXeL@B —› Программирование —› Ассемблер и поддержка КОИ-8
Посл.ответ Сообщение

Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 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


Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 03 марта 2013 22:44
· Личное сообщение · #2

Ассемблер и кодировка не связаны. Ну т.е. вообще никак не связаны. В принципе никак не связаны.
И чем не устраивают имена на английском, я тоже не уловил. Тем более, что в винапи только такие и есть.




Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 03 марта 2013 22:52
· Личное сообщение · #3

astronm пишет:
Означает ли это, что если поменять в ехе того-же блокнота ASCII на KOI8-R (скажем: KOI8-R "GetSaveFileNameW" )


Строка "GetSaveFileNameW" будет "GetSaveFileNameW" хоть в KOI8-R, хоть в ASCII , так что ничего менять не надо.

-----
http://ntinfo.biz




Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 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 ?




Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 04 марта 2013 02:15
· Личное сообщение · #5

Можно написать программу, которая на входе получала бы ассемблерный листинг с кириллицей, а компилятору передавался бы уже перевенный на английский текст. Только непонятен смысл всего этого.

-----
http://ntinfo.biz




Ранг: 13.8 (новичок), 8thx
Активность: 0.010.04
Статус: Участник

Создано: 04 марта 2013 02:36
· Личное сообщение · #6

astronm пишет:
Соответственно ADD, SUB, MUL, DIV будут ,скажем - ДОБ, ВЫЧ, УМН, ДЕЛ ,
OR, XOR, AND, NOT - ИЛИ, НИЛИ, И, НЕ .

Эм, может я не познал дзен.... Но кому такое нужно? Зачем ТАК извращаться над языком?



Ранг: 81.6 (постоянный), 102thx
Активность: 0.060.02
Статус: Участник

Создано: 04 марта 2013 03:06 · Поправил: Dart Raiden
· Личное сообщение · #7

Не надо превращать синтаксис ассемблера в синтаксис 1С.

То, что хочет автор называется не перевод компилятора, а создание нового ЯП.



Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 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 .



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 04 марта 2013 06:56
· Личное сообщение · #9

astronm пишет:
Соответственно ADD, SUB, MUL, DIV будут ,скажем - ДОБ, ВЫЧ, УМН, ДЕЛ ,
OR, XOR, AND, NOT - ИЛИ, НИЛИ, И, НЕ .

Все что вам нужно, есть в сях.
Войд выкладывал


| Сообщение посчитали полезным: drone, yagello


Ранг: 104.9 (ветеран), 47thx
Активность: 0.040.02
Статус: Участник

Создано: 04 марта 2013 08:45
· Личное сообщение · #10

astronm пишет:
Соответственно ADD, SUB, MUL, DIV будут ,скажем - ДОБ, ВЫЧ, УМН, ДЕЛ ,
OR, XOR, AND, NOT - ИЛИ, НИЛИ, И, НЕ .

сделайте мне развидеть это (

| Сообщение посчитали полезным: Dart Sergius, yagello


Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 04 марта 2013 09:45
· Личное сообщение · #11

astronm пишет:
откуда декомпилятор (Олли) знает ,что такое UNICODE и ASCII в бинарном коде?

Во-первых, это не декомпилятор, а отладчик. А имеется в виду, видимо, дизассемблер.
Во-вторых, нигде в бинарнике никакая кодировка не хранится. В бинарнике лежат просто код и данные. Для кода вообще нет понятия кодировки, его процессор напрямую выполняет. Для данных кодировка задаётся окружением ОС, в зависимости от этого ОС тебе по-разному их покажет.
А ANSI оно знает, потому что используется 1 байт на символ. UNICODE-2 байта на символ. И есть апи для определения типа текста. Так что это скорее тип и с кодировкой типа koi, cp и тд не связано.
Настоятельно рекомендуется взять и почитать уже про кодировки.
Что касается проекта, проще взять и на дефайнах накидать как в примере выше. Смысла никакого и работа рутинная, но если время девать некуда...
З.Ы. Прям чую рождение нового ассемблера "Иммунитет" или "Болгенос".



Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 04 марта 2013 17:05 · Поправил: astronm
· Личное сообщение · #12

Archer пишет:
А ANSI оно знает, потому что используется 1 байт на символ. UNICODE-2 байта на символ.


Хорошо, уже теплее. Тоже понятно,что к осям привязка существует.
А что если оси как таковой ещё нет, и ассемблер работает с процессором типа 6502 или наподобе?

Archer пишет:
Что касается проекта, проще взять и на дефайнах накидать как в примере выше.


В примере выше , Вы не сможете написать так:

#включить <ввпоток>
использовать полеимён стд;

<процедура> главная()
......

т.е. нужно перевести все header.c файлы и затем сделать так , чтобы компилятор это понимал ...



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 04 марта 2013 17:14
· Личное сообщение · #13

Не понимаю поголовного параноидального желания все и вся русифицировать, особенно то что этого не требует(так противно читать цикл Внекрылова, с русской олькой).



Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 04 марта 2013 17:20 · Поправил: astronm
· Личное сообщение · #14

Vovan666 пишет:
так противно читать цикл Внекрылова, с русской олькой


Можно поподробнее?

" Параноидального желания все и вся русифицировать" вроде нет, есть мысль попробовать "опустить планку" , того, что называется языковым барьером.
Из моего опыта более 50% программистов после 30 всё ещё учат английский, какую полноценную творческую работу они могут выплолнять?
Начать программировать без элементарного знания английского , опять же , не получится .
Не совсем понятно, чем это программирование так особенно?
Логика на уровне: играть в домино, могут только - люди говорящие по японски.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 04 марта 2013 17:53
· Личное сообщение · #15

astronm пишет:
В примере выше , Вы не сможете написать так

Кое-где смогу. Везде не смогу. Если надо, чтоб везде, пиши препроцессор для парсинга русской тарабарщины. Либо сразу свой компилятор.
astronm пишет:
ассемблер работает с процессором типа 6502

Бери да смотри, как производится вывод на экран. Если не ОС это делает, то как минимум прошивка видеоконтроллера. Какие шрифты ей известны, те и выведет. И сильно сомневаюсь, что они с кодировками работают. Или следующий вопрос будет, что там нужно перепаять?

Если программист не в состоянии к 30 годам язык выучить и переводчик он тоже не в состоянии осилить, чтобы хоть как-то смысл понять, пусть лучше идёт вагоны разгружает. Не вижу смысла опускать планку, ничего из него толкового в любом случае не выйдет.
Или есть ожидание, что они не могут перевести только add и mov, а документацию магическим способом узнают? Коль делать нечего, начни с перевода документации, на ближайшие лет 50 хватит.



Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 04 марта 2013 18:20 · Поправил: astronm
· Личное сообщение · #16

Archer пишет:
Если программист не в состоянии к 30 годам язык выучить


И чёрт с ними , не в них дело, Вы сами , к примеру, если бы начали на год раньше, в рамках Вашего теперешнего возраста - понятно- ничего существенного, однако в контексте упущенных возможностей , сами знаете - "раньше - лучше".

Archer пишет:
Или следующий вопрос будет, что там нужно перепаять?






Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 04 марта 2013 21:39 · Поправил: hors
· Личное сообщение · #17

astronm пишет:
Из моего опыта более 50% программистов после 30 всё ещё учат английский, какую полноценную творческую работу они могут выплолнять?
Начать программировать без элементарного знания английского , опять же , не получится .
Не совсем понятно, чем это программирование так особенно?
Логика на уровне: играть в домино, могут только - люди говорящие по японски.


Так уже есть языки программирования на русском, вот например --> Link <--

А если Вы хотите перевести ассемблер, чтобы опустить планку, то это не сработает, так ассемблер сам по себе сложен для понимания и точно не подойдет людям, которые не понимают английский даже на уровне написания листинга программы.

-----
http://ntinfo.biz





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 04 марта 2013 21:40 · Поправил: plutos
· Личное сообщение · #18

Archer:
Коль делать нечего, начни с перевода документации, на ближайшие лет 50 хватит.

Чем бы дитя не тешилось....

-----
Give me a HANDLE and I will move the Earth.




Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 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 <--


Идея Глагола мне нравится, но начинать я думаю надо с компилятора.

Почему компилятор - Бьерн Страуструп сказал - " Компилятор - твой лучший друг"




Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 05 марта 2013 01:06 · Поправил: hors
· Личное сообщение · #20

astronm пишет:
Понятно, я б с удовольствием взялся за компилятор для Raspberry PI http://www.raspberrypi.org/ , но увы, увы , в одиночку я это не осилю.


Осилите, если будете не изобретать велосипеды, а используете готовые решения, например для разбора синтаксиса. К примеру вот --> Link <--

astronm пишет:
Ещё добавьте каждые 2 года новая ВС и MSDN , затем готовьте английскую грамматику - ЯП уже пытаются влезть в голову, домысливая Customers до Customer , Orders до Order , как это делает сейчас EF.

"И Это только присказка, сказка впереди..."


Так Вы против английского языка по каким-то политическим соображениям? Это зря. И к здоровому патриотизму не имеет отношения.

-----
http://ntinfo.biz





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 05 марта 2013 01:39 · Поправил: plutos
· Личное сообщение · #21

plutos пишет:
Коль делать нечего, начни с перевода документации, на ближайшие лет 50 хватит.


это не я пишу, а Archer. (см. выше #15).

О чем вообще вся эта тема? О том, что каждый сходит с ума по-своему? Так это не требует никаких доказательств. Каждый дроchит, как он хочет, давно известно.

-----
Give me a HANDLE and I will move the Earth.




Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 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 <--


Спасибо , интересная штука.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 марта 2013 09:43
· Личное сообщение · #23

Такими темпами топик-кандидат на оффтоп. Либо задавай конкретные вопросы (и желательно перед этим почитать), либо пора закрывать его.



Ранг: 5.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 05 марта 2013 15:59
· Личное сообщение · #24

Archer пишет:
Такими темпами топик-кандидат на оффтоп. Либо задавай конкретные вопросы (и желательно перед этим почитать), либо пора закрывать его.


Согласен, можно закрывать , всем спасибо.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 марта 2013 16:13
· Личное сообщение · #25

Автор сам может закрыть свою тему, кнопка "Закрыть тему" находится внизу страницы, под кнопкой "Отправить сообщение".


 eXeL@B —› Программирование —› Ассемблер и поддержка КОИ-8
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати