Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.85 MB
Время: 0.066 c
15-1334781003
Юрий
2012-04-19 00:30
2013.03.22
С днем рождения ! 19 апреля 2012 четверг


15-1337160836
Инокентий
2012-05-16 13:33
2013.03.22
Как получить почту с гугла 3 людям?


15-1328614093
Denissoft
2012-02-07 15:28
2013.03.22
Вопрос Насчет сайта!


2-1347122752
Тимофей
2012-09-08 20:45
2013.03.22
MS SQL2005 express


2-1329256529
Deltas
2012-02-15 01:55
2013.03.22
Что за... сообщение в Delphi XE2.