Форум: "Прочее";
Текущий архив: 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.09 c