LINUX.ORG.RU

Немцы доказали...


0

0

что на Java 1.5.0 можно писать даже 3D-игры. При этом скорость игры измеренная в fps, ничуть не меньше, чем для скомпилированного C-кода

Если кто-то подумал, что взята какая-то левая самодельная игрушка, пусть сходит по ссылке. Сравнивается C-compiled и Java-версия игры Quake 2

>>> Подробности

anonymous

Проверено: Demetrio ()

Ответ на: комментарий от anonymous

>Практически все static. Наверное эту технику используют при написании Intellij IDEA. Вот она и работает быстро.

Eclipse тоже достаточно быстро работает, хотя и жрет памяти много (много, конечно, понятие относительное, возможно каждый мегабайт оправдан :) ). А уж ООП/КОП в нем выше крыши.

WFrag ★★★★
()
Ответ на: комментарий от linux_guru

> вы не согласны с тем что с ассемлера легко перевести на С?
1. Это не объясняет утверждение что "С это универсальный
ассемблер". Объясните эту фразу для непонятливых.
2. Не согласен. Не думаю, что WFrag потратил полтора месяца
(что, кстати, ещё очень мало для подобных работ) на написание,
как вы говорили, небольшого скриптика.

> это утверждение я сделал на основе своего опыта переписывания
> программ ранее написанных на ассемлере на С.
Эти программы были написаны вами же? У вас была дополнительная
информация о принципах работы этих прог? Переписывание с
ассемблера на С - это когда кроме исходника на асме, ничего
другого об этой проге нет вообще. Иначе - это просто написание
проги заново в соответствии с имеющимися спеками, а не
переписывание с асма.

anonymous
()
Ответ на: комментарий от alt-x

1)я не подрузумевал любую, не помню оговорил ли я это,
но программа на ассемблере:
а)решает прикладную задачу
б)определенным образом структуирована

2)перед тем как согласиться на спор, я хотел бы узнать как вы будете решать удволетворят "скрипт" вышеуказанным условиям или нет

linux_guru
()
Ответ на: комментарий от linux_guru

что-то всех куда-то повело в даль от немецкого доказательства

carrot
()
Ответ на: комментарий от linux_guru

>У меня так и дошли руки автомотизировать этот процесс, но в процессе переписывания я увидел что это вполне возможно, если при написании асемлерного кода придерживать некоторых правил.

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

И вообще, какую задачу решаем? Есть ассемблерный код. Что ты хочешь получить? C-код, который при компиляции даст абсолютно тот же ассемблерный код? Рассмотрим ситуацию:

1. Ассемблерный код - рукописный. Тогда задача решения не имеет. Я такого бреда на ассмеблере могу наваять, что ни один компилятор такое сгенерить не решится. :)

2. Ассемблерный код - сгенерен одним компилятором, а у тебя на руках - другой. Тоже задача в общем-то не имеет решения. Можно подобрать такую конструкцию, сгенеренную первым компилятором, которую второй компилятор никогда не генерит. Если такое найти не удастся, т.е для любого ассемблерного текста существует прообраз относительно преобразования заданного вторым компилятором (т.е для любого ассемблерного кода полученного компиляцией некоторого C-кода первым компилятором существует C-код, который будучи скомпилированный вторым компилятором преобразуется в тот же ассемблерный код), смотри следующий пункт:

3. Ассемблерный код - сгенерен компилятором C. Компилятор один и тот же. Скрипт пишется - проще некуда. Множество исходных текстов - счетно :) Ассемблерный код получен преобразованием некоторого текста из всего множества текстов программ. Значит, перебирая все тексты мы на каком-то шаге найдем нужный нам текст (возмножно, он будет отличаться от исходного, но результаты компиляции будут совпадать).

4. Есть ассемблерный код (неважно какой), нужно получить C-код имеющий ту же функциональность. И опять скрипт пишется - проще некуда. Просто эмулируем процессор+ассемблер, вшиваем в код программы большой строчкой ассемблерный код, наша программа его выполняет :)

Я пропустил еще какие-то классы задач? :)

В общем, было бы неплохо как-то формализовать задачу. Поставить функциональные (что ищем-то?) и нефункциональные условия (например, производительность).

для каждого конкретного ассемблерного кода такой скрипт подобрать, разумеется, не составляет труда. Даже с ограничением на производительность (чтобы не возникало соблазна воспользоваться пунктом 3). Это будет конструкция вида: echo "А_здесь_идет_C_код_специально_подобранный_человеком".

WFrag ★★★★
()
Ответ на: комментарий от anonymous

>С это универсальный ассемблер а что вам не нравиться? взгляните на исходники современных ОС, драйверов, платформно зависимых утилит - они написаны на C с вставками ассеблерного кода. догадайтесь почему? потому что когда пишешь на С можно легко понять в какие именно инструкции твой перейдет, что позволяет легко оптимизировать его.

linux_guru
()
Ответ на: комментарий от anonymous

>Надеюсь, им не придётся портировать эти исходники с bcc на gcc? >А то ведь и правда забьют... :)

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

WFrag ★★★★
()
Ответ на: комментарий от WFrag

я не предлагаю, мне предлагают.

задача:

есть ассемблерный код, надо получить код на C, который имеет ту же функциональность, причем код на C содержит очень мало или вообще не содержит
ассемблерных инструкций в виде asm и т.п. конструкций.

linux_guru
()
Ответ на: комментарий от linux_guru

>есть ассемблерный код, надо получить код на C, который имеет ту же функциональность, причем код на C содержит очень мало или вообще не содержит ассемблерных инструкций в виде asm и т.п. конструкций.

Ну, вот:

(*)>4. Есть ассемблерный код (неважно какой), нужно получить C-код имеющий ту же функциональность. И опять скрипт пишется - проще некуда. Просто эмулируем процессор+ассемблер, вшиваем в код программы большой строчкой ассемблерный код, наша программа его выполняет :)

Ни одной конструкции asm! Строчка не считается, это просто данные. :) Ну можно перекодировать asm-листинг. Тогда будет большой эмулятор x86 (например) плюс строчка с мусором (на самом деле закодированный asm-листинг).

Пока задача не задана формально, это пустой разговор. Нужно понять, на каком моменте мы можем точно сказать, что у нас есть C-исходник. Интуитивно понятно, что такой (*) код исходником все-таки считать не стоит.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

Но это вопросы не ко мне, все таки не я предложил 1000$ за написание подобного скрипта.
хотя можно заметить

>Строчка не считается, это просто данные. :)

можно добавить правила что код на C содержит только те данные которые
содержит код на асме.

linux_guru
()
Ответ на: комментарий от anonymous

>Либо, если сами не в состоянии, сошлитесь на авторитетный >источник (указав ссылку на него, чтобы мы почитали). >Тогда и поговорим :)

http://www.joelonsoftware.com/

anonymous
()
Ответ на: комментарий от WFrag

> И вообще, какую задачу решаем? Есть ассемблерный код. Что ты хочешь
> получить? C-код, который при компиляции даст абсолютно тот же
> ассемблерный код?
Скорее всего просто на заданном множестве наборов входных
данных он должен будет выдавать те же результаты, что и
оригинал. Пытаться получить тот же асмовый код - это глупо
imho.

> Просто эмулируем процессор+ассемблер, вшиваем в код программы
> большой
> строчкой ассемблерный код, наша программа его выполняет :)
Я не alt-x (в споре не участвую), но думаю, что вставлять
в исходник какие-либо строки, кроме тех, что выводятся на
экран/в файл, будет запрещено. Это поможет избежать мошенничества.
Ассемблерные вставки тоже, разумеется, попадают в эту категорию -
они в gcc, как и обычные строки, берутся в кавычки, и должны
быть запрещены.

Возможно удастся выкрутиться чем-то похожим на транслятор кода +
виртуальную машину - для каждого регистра выделять отдельную
Сшную переменную, каждую ассемблерную инструкцию транслировать
в несколько операторов С, которые в точности будут иммитировать
её поведение, и тд. Может это даже и будет работать... Но опять
же, за 1000$ - это не вариант. Так что если даже это и будет
сделано - alt-x всё равно в выигрыше будет:) А вот если
linux_guru и правда предложит простое и работоспособное решение -
тогда да... будут аплодисменты и шампанское:)

anonymous
()
Ответ на: комментарий от linux_guru

>и один из наших программистов, с помощью дизассемблирования напсал C код

Потом его вывезли в топливном баке самолета и теперь все его знают как Билла Гейтса? Или нет. Лучше "как Линукса Торвальдса"?

Типа да?

anonymous
()
Ответ на: комментарий от WFrag

> есть ассемблерный код, надо получить код на C

если приделать туда наш CINT
http://root.cern.ch/root/Cint.html

получим, то за что Линус получал деньги от Transmeta

Вперед Василий!

carrot
()
Ответ на: комментарий от linux_guru

> взгляните на исходники современных ОС, драйверов, платформно
> зависимых утилит - они написаны на C с вставками ассеблерного кода.
> догадайтесь почему? потому что когда пишешь на С можно легко понять
> в какие именно инструкции твой перейдет, что позволяет легко
> оптимизировать его.
Абсолютно не по этому. А по тому, что логику работы драйвера не
обязательно писать на асме. По тому, что написав её на С, её
будет легче понять другим, и легче портировать на другую
архитектуру или подогнать под другое похожее устройство.
По тому, что даже работу с аппаратурой можно полностью
реализовать на С - функции для работы с портами ввода/вывода
всё равно доступны, и asm в большинстве случаев удаётся
избежать полностью. По тому, что нужно вызывать другие
функции (функции ядра или библиотек), а это лучше делать на
С, т.к. методы их вызова постоянно меняются (то через стек
параметры передадут, то через регистры, то вообще inline
поставят и на асме уже не вызвать будет). Да мало ли почему
ещё. Полно причин для написания драйверов _не_ на асме. Но
совсем не те, что вы назвали.
Так почему всё-таки "С это универсальный ассемблер"? Так и
не понял. К тому же анонимус тут ссылку приводил на определение
высокоуровневого языка - написано, что С входит в их число.

anonymous
()
Ответ на: комментарий от linux_guru

Да нет же, первично речь шла о любой:

>linux_guru (*) (05.01.2005 1:23:56) >я имею ввиду >а)переводить прикладную задачу на ассемблере >б)для конкретного ассемблера и конкретной архитектуры

И это было как раз в ответ на мой пост про то что использовать виртуальную машину было бы жульничеством.

А свои требования я изложил тут: http://www.linux.org.ru/view-message.jsp?msgid=753133#753643

alt-x ★★★★★
()
Ответ на: комментарий от alt-x

> А свои требования я изложил тут:
> http://www.linux.org.ru/view-message.jsp?msgid=753133#753643
---
Критерием правильности является идентичность скомпилированой проги с
оригиналом.
---
Очевидно, что этот критерий никуда не годится. Нельзя ли, всё же,
более рациональный критерий использовать? А то ведь не будет
спора у вас...

anonymous
()
Ответ на: комментарий от WFrag

>> Надеюсь, им не придётся портировать эти исходники с bcc на gcc?
>> А то ведь и правда забьют... :)
> Да что там портировать, это ж C, хоть и старый.
Да, но, например, far pointers VS flat pointers - далеко не
единственная проблема. Я слышал о проектах, которые так и не
переползли на 32битный компилятор. Тот же FreeDOS. На djgpp
его спортировать так и не удалось, после чего интузиасты сделали
форк FreeDOS32. В результате ничего работоспособного так до сих
пор и не получилось.
Не мне вас учить, но обычно разработчики предпочитают получать
код, который уже готов для включения в их продукт. Кучу раз
нарывался на то, что даже если патч сделан на более старой
версии продукта, уже могут на него забить. Не говоря уже о
каком-то портировании.

anonymous
()
Ответ на: комментарий от anonymous

>написанную Сергеем Дмитриевым, сооснователем JetBrains.

А что за JetBrains?

>А теперь посмотрим на программу (http://www.sergeydmitriev.com/mps/mps100.zip), написанную

А что он за программу написал?

anonymous
()
Ответ на: комментарий от alt-x

>А свои требования я изложил тут:

я как-то проглядел, извиняйте.

честно говоря не согласен с условиями нельзя ли изменить?

во-первых не давала идентичный код, а имела ту же функциональность.

а во-вторых на асм x86 я много не писал

предлагаю асм VAX'a, тем более я думаю что это явлеятся критичным в условиях спора.

linux_guru
()
Ответ на: комментарий от linux_guru

диагноз простой - модераторы в запое ... а немцы доказали... ;-)

carrot
()

Пост, чтоб другого треда в топ10 не было.

anonymous
()

Пост, чтобы другого треда в топ10 не было.

anonymous
()

Пост, чтобы другого треда в топ10 не было.

anonymous
()

предлагаю провести тест на реальную скорость при работе с графикой ...

без OpenGL и прочих чудес ...

берём простую таблицу перехода (линза, завихрение, скрутка в центр и ..ю) или клеточный автомат (blur, огонь, рельеф ....)

и реализуем это на Java, на C и на асме (можно даже без MMX, SIMD-команд, разворачивания циклов и пр.) и реально смотрим что быстрее ...

(для самых нетерпеливых - asm порвёт всех ...)

anonymous
()
Ответ на: комментарий от anonymous

>(для самых нетерпеливых - asm порвёт всех ...)

Не обязательно. Какой-нибудь Intel C++ Compuler стопудово лучше меня соптимизирует.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

>Не обязательно. Какой-нибудь Intel C++ Compuler стопудово лучше меня соптимизирует.

Возможно ...

ОК, нафиг оптимизацию ...

-MMX

-SIMD (SSE1,2/3DNow)

-выравнивание по кэш

-распараллеливание по конвеерам

:) играем честно ...

anonymous
()
Ответ на: комментарий от anonymous

>Возможно ...

>ОК, нафиг оптимизацию ...

Ну тогда это неспортивно... Можно с тем же успехом отобрать у Java JIT, как оптимизацию. А без него у нее производительность на порядок упадет. А так у нее будет шанс хотя бы процентов 50% от победителя показать. :)

WFrag ★★★★
()
Ответ на: комментарий от WFrag

О чём тогда спор ....

Туту рулят вовсе не Языки а разумное аппаратное решение ...

Когда-то, помнится, и Амига рулила именно из-за этого ... Спираль :)

anonymous
()
Ответ на: комментарий от linux_guru

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

anonymous
()
Ответ на: комментарий от anonymous

> vampires тоже на Яве написана

VtM: bloodlines? там же движок хл2, а значит Си

JB ★★★★★
()
Ответ на: комментарий от anonymous

А что думаете специалисты пишут книги, типа возьмем
пример myprog.c с прилагаемого компакт диска,
скомплируем, поздравляю вы написали свою первую чуду программму.

linux_guru
()
Ответ на: комментарий от linux_guru

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

Взгляните на демки размером 64 килобайта!

Это ж сплошной вызов функций DirectX или OpenGL. Зато на экране красота.

Тестирование в корне неверное. Не позволяйте вешать лапшу на уши!

anonymous
()
Ответ на: комментарий от linux_guru

>во-первых не давала идентичный код, а имела ту же функциональность.

Ну, функциональность. Если нельзя гарантировать что код будет идентичен - это как бы опровергает Ваш тезис о том, что С это ассемблер. Поскольку, программу, которая переводит машинные коды в ассемблер, оттранслировав который можно получить точно те же машинные коды, написать возможно. Я ей пользовался 12 лет назад, чтобы по BIOSy машинки, понять, как она должна была работать и починить...

Давайте сойдемся на том, что С - это язык низкого уровня, близкий к ассемблеру, но им не являющийся.

alt-x ★★★★★
()
Ответ на: комментарий от anonymous

Все сходятся на том, что ниже C есть только ассемблер ...
так же, как и для фортрана и пр.

carrot
()
Ответ на: комментарий от anonymous

>У меня на RedHat9 была Q3 заметно медленнее чем на w2k

На RedHat9 глючил dl_open. Теоретически, третья Квака вообще не должна была на нём запускаться ;)

V_L_A_D ★★
()
Ответ на: комментарий от anonymous

>Ты смотришь не на тот ассемблер. Посмотри на ассемблер для PDP.

Ой, смотрел уже. Тогда, когда он был актуален. Да он удобней, конечно, не надо греть голову, иcпользуется R1 или R3, но по большому счету asm - это asm. Что я там должен нового увидеть на PDP? Чем оно лучше Мотороловского или, скажем i860?

И потом, чтобы доказать, что С не является ассемблером, достаточно найти один контрпример, не так ли?

alt-x ★★★★★
()
Ответ на: комментарий от alt-x

> Что я там должен нового увидеть на PDP?

Практически однозначный перевод asm -> c.

anonymous
()
Ответ на: комментарий от WFrag

> Множество исходных текстов - счетно

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

К сожалению, букваря под рукой нет, поэтому могу и ошибиться.

Если кому-то нужно узнать точно --- см. Глушков, Цейтлин, Ющенко. "Алгебра. Языки. Программирование". Там, кажется, мощность этого множества выводилась по-честному.

--

SVK

anonymous
()
Ответ на: комментарий от anonymous

> Если мне не изменяет мой склероз, множество строк всевозможной длины, собранных из заданного алфавита (конечного), имеет, как ни странно, мощность континуум.

В данном случае множество строк конечной длины из букв конечного алфавита. Такое множество счетно.

CybOrc
()
Ответ на: комментарий от kiz

> а в сети валяеться гама kkreger. Один уровень (кстати ничего так, по > размеру примерно как один уровень в Q1) Всё 3d. Звук есть, несколько > типов оружия, враги. Босс даже :) Вобщем всё как надо. ~100kb. Тока > системные требования у неё очень неплохие. Оперативы от 512, видюха > на 128, ну и всё в таком духе. Камень хороший нужен

from http://forum.pcmech.com/showthread.php?t=109949

My friend uses windows XP. He told me over the phone that he downloading some file which he thought was a game. File was called kkreger(I don't know what file extension). He says after that everything on his PC went downhill after that download(Could find nothing about kkreger on goole). Stuff from the Windows XP log on screen turned to a windows 98 screen, also his AOL is not working. When he accesses his start menu he tells me it takes forever to load up.

He has about 40GB of free space out of 80GB, hes runs spybot and defrags often so hes up to date on that. However he didn't have any antivirus software until everything started going downhill. He did go and buy norton and it only found 1 virus that was spyware related that was junk.

I will be going to his house hopefully tomorrow or tonight if I have time. For one I have no idea why his windows XP display screen now says windows 98. Also he cannot connect to any website. He also gets some other errors I don't know about until I actually go and see them.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.