Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Ассемблерные вставки и переносимость кода   Найти похожие ветки 

 
KSergey ©   (2012-06-15 09:34) [120]

> KSergey ©   (15.06.12 09:31) [119]
> Думаю, это неправильное утверждение.

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

при этом то, что строки имеют ограничение - само по себе утверждение, конечно, полностью верное )


 
Ega23 ©   (2012-06-15 09:38) [121]


> Если мы говорим о компьютере - то тоже любое, т.к. и строки,
>  и возможные числа обязательно имеют ограничения разными
> конечными величинами


Взаимоисключающие параграфы.


> Ну в дельфи есть свое ограничение на строки, таки да, но
> ведь можно не встроенными в компилятор строками пользоваться.


?


 
KSergey ©   (2012-06-15 09:43) [122]

> Ega23 ©   (15.06.12 09:38) [121]
> Взаимоисключающие параграфы.

Не понял.


 
KSergey ©   (2012-06-15 09:44) [123]

Кстати, кто недоволен стилем общения с уважаемыми людьми - может провести простейший эксперимент: регистрируешься на форуме другим ником и спрашиваешь/отвечаешь.
Эксперименты такие проводились и результаты впечатляют, доложу я вам.


 
oxffff ©   (2012-06-15 09:47) [124]


> Cobalt ©   (15.06.12 09:24) [118]
> О! идеальный формат для хранения значения "NAN"
>
>


Стеб, не по существу.


 
Омлет ©   (2012-06-15 09:48) [125]


> KSergey ©   (15.06.12 09:44) [123]

Хамство процветает?


 
KSergey ©   (2012-06-15 09:53) [126]

> Омлет ©   (15.06.12 09:48) [125]
> Хамство процветает?

Спойлерить не буду.


 
oxffff ©   (2012-06-15 09:54) [127]

Друзья, остановитесь.


 
KSergey ©   (2012-06-15 09:58) [128]

> KSergey ©   (15.06.12 09:43) [122]
> > Взаимоисключающие параграфы.
> Не понял.

Серьезно, не понял.
Можно подробнее?


 
Rouse_ ©   (2012-06-15 13:11) [129]


> KSergey ©   (15.06.12 09:58) [128]
> Серьезно, не понял.
> Можно подробнее?

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


 
Cobalt ©   (2012-06-15 16:30) [130]

Удалено модератором


 
KSergey ©   (2012-06-15 17:01) [131]

> Rouse_ ©   (15.06.12 13:11) [129]
> Имелось ввиду что раз есть ограничение, то записать любое значение не получится...

А я намекаю на то, что не удастся привести пример числа, которое невозможно записать (ну если сформулировать в формате "а вот напиши тут число, которое не удастся записать"), а раз не возможности привести пример того, что нельзя записать, значит записать можно любое :)


 
Ega23 ©   (2012-06-15 17:06) [132]


> А я намекаю на то, что не удастся привести пример числа,
>  которое невозможно записать


Да легко.
10000000000000000000000000000000^100000000000000000000000000000000000000


 
картман ©   (2012-06-15 17:23) [133]


> Да легко.
> 10000000000000000000000000000000^100000000000000000000000000000000000000

длиннО


 
KSergey ©   (2012-06-15 17:25) [134]

> Ega23 ©   (15.06.12 17:06) [132]

Я знал, что это кто-то напишет )
Это математическая операция, а не число, что не одно и тоже.
И саму операцию записать действительно можно, в отличии от результата.


 
картман ©   (2012-06-15 17:27) [135]

ну на: http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B5%D0%BB%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D0%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F_%D0%9A%D0%BD%D1%83%D1%82%D0%B0


 
KSergey ©   (2012-06-15 17:27) [136]

А если это таки считать числом - то ничто не мешает вот в таком виде это и хранить.


 
Rouse_ ©   (2012-06-15 17:32) [137]


> А я намекаю на то, что не удастся привести пример числа,
>  которое невозможно записать

Я пропустил немного, куда именно записать? Если в ShortString то это любое число больше 255 знаков. Если в обычную строку то любое число с числом знаков большим $80000000 (например PI)


 
KSergey ©   (2012-06-15 17:39) [138]

> Rouse_ ©   (15.06.12 17:32) [137]
> Я пропустил немного, куда именно записать?

В компьютер.
Про это - повторюсь - была фраза "ничто не мешает сделать собственную какую угодно реализацию строки", т.к. - если придираться - я нигде не упоминал конкретное название типов строк.


 
Rouse_ ©   (2012-06-15 17:44) [139]


> была фраза "ничто не мешает сделать собственную какую угодно
> реализацию строки

А это большой роли не играет, ты упрешься в лимит 2 гига виртуальной памяти, в который то-же PI представленное в виде строки просто не влезет. Можно расширить до трех под 32 битами и не помню до скольки под 64 битами, но во всех трех случаях PI в виде строки не влазит (там сейчас более 10 триллионов цифр после запятой, т.е. памяти нуно оч много)


 
Inovet ©   (2012-06-15 17:45) [140]

> [134] KSergey ©   (15.06.12 17:25)
> Это математическая операция, а не число, что не одно и тоже.

Дв ну. Вот тебе число - Пи.


 
Inovet ©   (2012-06-15 17:46) [141]

> [137] Rouse_ ©   (15.06.12 17:32)
> куда именно записать?

Неважно, хоть в файле пусть хранится.


 
KSergey ©   (2012-06-15 17:54) [142]

> Inovet ©   (15.06.12 17:45) [140]
> Дв ну. Вот тебе число - Пи.

Я уже ведь писал выше.
Строка может содержать любые символы. Так и записать в нее - Пи


 
Rouse_ ©   (2012-06-15 18:07) [143]


> Так и записать в нее - Пи

Ну так это же не число, а его аббревиатура :)


 
KSergey ©   (2012-06-15 18:14) [144]

Ага,  10000000000000000000000000000000^100000000000000000000000000000000000000 - число, а Пи - аббревиатура.


 
Rouse_ ©   (2012-06-15 18:18) [145]


> KSergey ©   (15.06.12 18:14) [144]
>
> Ага,  10000000000000000000000000000000^100000000000000000000000000000000000000
> - число

Я разве это говорил? Я говорил другое, а именно что PI, представленное в виде строки до 10 триллионов знаков после запятой, ты не сможешь поместить в память приложения, что собственно (я надеюсь) и есть контраргумент на


> записать можно любое


 
KSergey ©   (2012-06-15 18:38) [146]

> Rouse_ ©   (15.06.12 18:18) [145]

см. KSergey ©   (15.06.12 17:01) [131]


 
Rouse_ ©   (2012-06-15 18:41) [147]


> KSergey ©   (15.06.12 18:38) [146]

Блин, а я разве не привел пример такого числа? :))) Серег, я реально не понимаю, то ли ты меня зацепить хочешь, то ли... ну даже не понимаю :)


 
Inovet ©   (2012-06-15 18:53) [148]

> [142] KSergey ©   (15.06.12 17:54)
> Так и записать в нее - Пи

Надо его вычислить и записать результат в строку.


 
KSergey ©   (2012-06-15 19:13) [149]

> Rouse_ ©   (15.06.12 18:41) [147]
> Серег,
>  я реально не понимаю, то ли ты меня зацепить хочешь, то ли... ну даже не понимаю :)

Я не занимаюсь троллингом сознательным. Во всяком случае здесь и сейчас. Торжественно клянусь.

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

Именно потому я и пытаюсь эти самые различия в трактовке терминологии нащупать и сформулировать. В данной ветке с самого ее начала.

С самого начала ветки, как выяснилось, ты не отделял язык Дельфи от его реализации. Для тебя это суть одно и (ну судя по этой ветке) ты не видишь разницы, ну или настолько привык видеть вот так, что не замечаешь этой разницы уже.
Бога ради, вполне нормальная точка зрения, я лично ничего не имею против, но я это не сразу понял, пытаясь все трактовать с точки зрения высокоуровневого языка Delphi Language.

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

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

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

Я, во-первых, считаю, что если мы говорим про числа и компьютер - то и приводить надо числа, привести бесконечные - невозможно, это понятно.

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


 
KSergey ©   (2012-06-15 19:16) [150]

> Inovet ©   (15.06.12 18:53) [148]
> > Так и записать в нее - Пи
> Надо его вычислить и записать результат в строку.

Заходи ко мне, приноси еду, я тебе буду записывать.
То, что ни ты, ни я результат не сможем увидеть ибо смертны - ну извини, ты сам так поставил задачу.


 
Inovet ©   (2012-06-15 19:21) [151]

> [150] KSergey ©   (15.06.12 19:16)
> То, что ни ты, ни я результат не сможем увидеть ибо смертны
> - ну извини, ты сам так поставил задачу.

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


 
Rouse_ ©   (2012-06-15 19:24) [152]


> С самого начала ветки, как выяснилось, ты не отделял язык
> Дельфи от его реализации.

Я просто привык. В некоторых вещах асм мне ближе и проще чем дельфи или плюсы, поэтому для меня даже понятие "указатель" несколько искусственное. Есть адрес блока данных, как он представлен (значением в регистре, либо расположен на стеке/куче/статической константой наподобие KE_USER_SHARED_DATA) монопенисюально. Именно поэтому я спокойно и приводил такие примеры. Может быть я не прав с точки зрения прикладного программирования, но разницы нет абсолютно никакой.
А по поводу:


> кардинально разной и не эквивалентной записью числа Пи в
> виде вот этого Пи, и его представления

естественно это разные вещи, ведь в первом случае я не смогу получить двамиллонапервый знак после запятой. Потому что его просто нет. Есть некая аббревиатура PI ничего не значащая. Это то-же как поместить в массив переменную Х вместо ее реального значения.


 
Rouse_ ©   (2012-06-15 19:52) [153]

Да и кстати, Серег, в плане переносимости и т.п. вот посмотри плз вот такой пример: http://rouse.drkb.ru/other.php#round
В реальности размер оригинального рабочего модуля в 18 раз больше, тут только то, что разрешило начальство опубликовать.
Как видишь задача чересчур не тривиальная и решена двумя способами в виде портируемого кода и в виде кода на ассемблере, который порядочно быстрее портируемого. Как думаешь, оправдан ли ассемблерный вариант, с учетом того что данный код в боевом приложении вызывается в районе нескольких миллионов раз при изменении любого значения (происходит пересчет всех параметров) или стоило остановиться на том варианте, который на строках?


 
KSergey ©   (2012-06-15 21:00) [154]

Вот еще.
Я просил привести примеры чисел, которые нельзя записать.

Были приведены примеры:
1) 10000000000000000000000000000000^100000000000000000000000000000000000000
2) PI

Логично предположить, что авторы ответов считают эти записи числами, ведь именно числа надо было привести.
Но тогда мне не понятно, почему в их ответах записаны числа, а в моих ровно тоже самое - нет.


 
Rouse_ ©   (2012-06-15 21:08) [155]


> KSergey ©   (15.06.12 21:00) [154]
> Вот еще.

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


 
KSergey ©   (2012-06-15 21:15) [156]

> Rouse_ ©   (15.06.12 19:52) [153]
>  Как думаешь, оправдан ли ассемблерный вариант,

Да я же разве против ассемблерных вставок?? Я только за! (вру, я против, но тут вопрос поддерживаемости и квалификации требующихся сотрудников компании; но это уже совсем другая опера, разумеется; это уже к вопросу построения бизнеса относится, т.е. определяется экономической эффективностью, которую каждый добивается по-разному).

Но как только появляются ассемрлерные вставки, говорить о какой-то переносимости - в моём понимании - ну просто я даже ен понимаю как. Ибо переносимость в моём понимании - это те грабли, по которым у нас ходили при порировании базовых сетевых библиотек (на Си) под Андроид, iOS и Unix. Настолько все разное - что просто диву даешься! Понятно, что ассемблерные вставки мягко говоря непортируемы здесь в принципе.

А теперь при x64 прикорячилось - так и вовсе стало тоскливо, даже Pointer с Integer не совпадают, т.е. срочно надо менять все интерфейсы на "прослоечные" типы, тоже самое с внутренними структурами хранилищ и т.д. И это самое очевидное. Проблемы со сдвигами влево-вправо, циклическими переполнениями, на которые есть заточки, и т.п. вещи, которые мнгновенно вылезают из-за смены разрядности многих типов, причем по-разному...  Как это все перетестировать - вообще не понятно.

Вот это в моем понимании - про портируемость. А про перенос проекта под новую версию того же компилятора того же производителя - ну это про другое несколько.  Т.е. речь опять сугубо о терминологии )

PS
Слушайте, вы бы с машими умениями научили СигналКом подписывать документы побыстрее, а? ну или нишу их занять ) а то они по 400 мс. каждые 300 байт подписывают, сюр какой-то просто.


 
Rouse_ ©   (2012-06-15 21:25) [157]


> KSergey ©   (15.06.12 21:15) [156]

Нет вопрос немного в другом, без ассемблера данную задачу у меня не получилось решить правильным образом, ибо правильный вариант слишком медлен. Т.е. либо мы получаем на выходе обработку данных с солидными тормозами, либо вот так как есть... Понятно что когда (и если) начнется переход на х64 мне придется переписать порядка 310-320 тысяч строк асм кода (примерно такой объем ядра защиты и математических модулей) но без них приложение начинает выглядеть тоскливо, ибо основной упор (по крайней мере в математике) был сделан на оптимизацию (я там и так имею просадку на разложение BCD строки, пришлось помучаться, пытаясь ускорить это дело).


> Слушайте, вы бы с машими умениями научили СигналКом подписывать
> документы побыстрее, а?

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


 
KSergey ©   (2012-06-15 21:27) [158]

А теперь по сути.

> Rouse_ ©   (15.06.12 19:24) [152]
> естественно это разные вещи, ведь в первом случае я не смогу
> получить двамиллонапервый знак после запятой. Потому что его просто нет.

Для начала предлагаю конкретизировать, что выражение "двамиллонапервый знак" подразумевает "двамиллонапервый знак в десятичном представлении числа". Оно нам нужно для того, чтобы абстрагироваться таки от буквального символьного содержимого нашей волшебной строки числа.

Далее предлагаю облечь фразу "получить двамиллонапервый знак после запятой" в более конкретную синтаксическую форму.

В поем понимании, это будет выглядеть вот так:
           S[2000001+2]
(+2 - это про то, что в десятичном представлении есть цифра 3 и точка)

Совершенно очевидно, что ничто не мешает определить такую операцию "квадратные скобки", которая будет возвращать цифру на указанной позиции в десятичном представлении числа.

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

PS
Клянусь, это не стёб и не клоунада. Я это вижу вот так.


 
Rouse_ ©   (2012-06-15 21:34) [159]


> Далее предлагаю облечь фразу "получить двамиллонапервый
> знак после запятой" в более конкретную синтаксическую форму.
>
>
> В поем понимании, это будет выглядеть вот так:
>            S[2000001+2]
> (+2 - это про то, что в десятичном представлении есть цифра
> 3 и точка)
>
> Совершенно очевидно, что ничто не мешает определить такую
> операцию "квадратные скобки", которая будет возвращать цифру
> на указанной позиции в десятичном представлении числа.

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


 
Rouse_ ©   (2012-06-15 21:35) [160]

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



Страницы: 1 2 3 4 5 6 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.83 MB
Время: 0.098 c
15-1347723990
alexdn
2012-09-15 19:46
2013.03.22
Картина знаменитые люди


15-1351354654
Дмитрий С
2012-10-27 20:17
2013.03.22
Сортировка папок и файлов наравне. windows 7


15-1333095615
Медвежонок Пятачок
2012-03-30 12:20
2013.03.22
oiosaml.java


15-1353616205
Юрий
2012-11-23 00:30
2013.03.22
С днем рождения ! 23 ноября 2012 пятница


15-1353245447
Artem
2012-11-18 17:30
2013.03.22
Простой парсинг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский