Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кроссплатформеность 
:(
    Опции темы
Real
Дата 4.1.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 507
Регистрация: 9.11.2007

Репутация: нет
Всего: -1



 Asm он кроссплатформеный или нет?

Это сообщение отредактировал(а) Real - 4.1.2008, 20:42
PM   Вверх
MAKCim
Дата 4.1.2008, 20:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



нет


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SABROG
Дата 9.1.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Если я задам вопрос: "C++ кроссплатформенный ?", что вы ответите ?

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


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
dumb
Дата 10.1.2008, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 4
Всего: 158



для начала, стоило бы уточнить: что автор вопроса понимает под "кроссплатформенностью"?
PM MAIL   Вверх
rei3er
Дата 11.1.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



SABROG, 
ЯВУ - это абстракции, которые преобразуются в код на ассемблере для данной архитектуры
код на ассемблере - это просто мнемонические обозначения инструкций, а инструкции не переносимы
мнемонику и инструкции нельзя поставить во взаимно-однозначное соответствие при переносе на другую платформу
FASM тут вообще не в тему
если компилятор есть под разные ОС, то это еще не говорит о том, что при переносе его, скажем, на PowerPC, все программы написанные для x86 скомпилируются
в этом суть некроссплатформенности ассемблера
PM MAIL   Вверх
SABROG
Дата 11.1.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Но и не кроссплатформенным ты его не назовешь. Предположим есть старый компилятор C++, он ничего не знает о новых архитектурах, не знает как преобразовывать мнемонику,  значит опять же не C++ не кроссплатформенный, а компилятор. Понятно, что это распространяется и на компилятора ассемблера. Если даже на новой платформе нет аналогу mov, xor, add, imul, то есть другие инструкции. И чтобы сделать программу на ассемблере кроссплатформенной, придется просто написать 2 разных кода. На C++ не нужно будет. А если даже нет компилятора под новую платформу, то можно тупо писать машинными кодами, если в этом спец, любой компилятор ассемблера это схавает.

И можно ли называть язык кроссплатформенным, если он поддерживат всего два процессора ? Или две операционные системы ? Я думаю, что можно.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
rei3er
Дата 11.1.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



Цитата(SABROG @  11.1.2008,  12:36 Найти цитируемый пост)
И чтобы сделать программу на ассемблере кроссплатформенной, придется просто написать 2 разных кода.

вот именно на этом моменте кроссплатформенность теряется
судь кк в том, что код переписовать не надо
PM MAIL   Вверх
SABROG
Дата 11.1.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Если руководствоваться такой логикой, то Firefox не кроссплатформенный, т.к. имеет две версии исходников, одни для винды, другие для линукса. Php, Python, Perl тоже не кроссплатформенные тогда.

У каждой ОС свой набор API функций, ни один кроссплатформенный компилятор не знает о них ничего. А что говорить о MSVC или Delphi, они настолько не кроссплатформенные, что в них нельзя создать приложения win16 (не забыли еще о таких ?) или под ДОС.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
W4FhLF
Дата 11.1.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Цитата(SABROG @  11.1.2008,  14:22 Найти цитируемый пост)
Если руководствоваться такой логикой, то Firefox не кроссплатформенный, т.к. имеет две версии исходников, одни для винды, другие для линукса. Php, Python, Perl тоже не кроссплатформенные тогда.


Ты несёшь бред. C/C++ потому кроссплатформенный, что для исполнения программы под другой ОС нужна только перекомпиляция, если ты ограничиваешься только средствами самого языка. Это идеальный случай, в крайности впадать не надо, т.к. везде есть исключения.

Скрипты тоже не нуждаются в переписывании, они исполняются на тех платформах, на которых есть интерпретатор. Сами же интерпретаторы не являются КК и их никто такими не считает. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SABROG
Дата 11.1.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Цитата(W4FhLF @ 11.1.2008,  15:03)
Цитата(SABROG @  11.1.2008,  14:22 Найти цитируемый пост)
Если руководствоваться такой логикой, то Firefox не кроссплатформенный, т.к. имеет две версии исходников, одни для винды, другие для линукса. Php, Python, Perl тоже не кроссплатформенные тогда.


Ты несёшь бред. C/C++ потому кроссплатформенный, что для исполнения программы под другой ОС нужна только перекомпиляция, если ты ограничиваешься только средствами самого языка. Это идеальный случай, в крайности впадать не надо, т.к. везде есть исключения.

Скрипты тоже не нуждаются в переписывании, они исполняются на тех платформах, на которых есть интерпретатор. Сами же интерпретаторы не являются КК и их никто такими не считает.

А теперь подумай, если я ограничусь языком одного ассемблера и напишу программу, которая будет складывать 1+1. То чем она будет отличаться от C++ или Php, чем она не кроссплатформенна ?

Кстати помимо fasm'a есть еще gas (GNU Assembler), который работает под *nix'aми и в составе mingw под виндой (as.exe). У него синтаксис AT&T. Поэтому я категорически не согласен с тем, что ассемблер не кроссплатформенный.

Это сообщение отредактировал(а) SABROG - 11.1.2008, 15:42


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
W4FhLF
Дата 11.1.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Цитата(SABROG @  11.1.2008,  15:26 Найти цитируемый пост)
которая будет складывать 1+1


Хорошо, а теперь представь, что твоя программа должна складывать введённыое пользователем a и 1, а после выводить результат. 

В чём может быть задача программы, которая ничего не получает и ничего не выдаёт?

PS Напиши кроссплатформенный "Hello World" на асме. 

Это сообщение отредактировал(а) W4FhLF - 11.1.2008, 15:42


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SABROG
Дата 11.1.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Цитата(W4FhLF @ 11.1.2008,  15:40)
PS Напиши кроссплатформенный "Hello World" на асме.

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

Если с этим разобрались, теперь можно попытаться меня припереть к стенке переключением понятия "платформы", начав считать ею процессор, а не ОС. Но даже в этом случае доработав компилятор ассемблер снова становится кроссплатформенным.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
W4FhLF
Дата 11.1.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Цитата(SABROG @  11.1.2008,  15:59 Найти цитируемый пост)
Я писать ничего не буду, но скажу


Я тоже могу много чего сказать, но слова - это всего-лишь слова.

Цитата(SABROG @  11.1.2008,  15:59 Найти цитируемый пост)
 что в какой ОС не пиши в видеопамять результат один - загараются пикселы на экране. И протокол работы с устройствами через порты (на нулевом кольце) от ОС не меняется никак.


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

Так, что не мешай всё в кучу, а просто признай, что ошибся. В этом нет ничего смертельного.

Цитата(SABROG @  11.1.2008,  15:59 Найти цитируемый пост)
Если с этим разобрались, теперь можно попытаться меня припереть к стенке переключением понятия "платформы", начав считать ею процессор, а не ОС. Но даже в этом случае доработав компилятор ассемблер снова становится кроссплатформенным.


Ога, а ещё мы процессор перепаяем, лишь ассемблер у нас кк стал smile



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SABROG
Дата 11.1.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Возьми драйвер клавиатуры в линуксе (в свободном доступе лежит) и драйвер клавиатуры Windows (тоже в свободном доступе DDK) и сравни протокол взаимодействия с контроллером. И тогда мои слова сразу перестанут быть просто словами.

Т.е. все-таки ты тянешь в сторону ОС, называя ее Платформой, а не архитектуру.

Тогда еще раз спрошу, чем пример с "1+1" тебе не нравится ? Он переносим ? Переносим ! А значит кроссплатформенный.

Насчет printf в С++. Ну не имеет компилятор ассемблера таких функций, он что не кроссплатформенным после этого становится ? А может программы которые он создает не должны ничего никому выводить на экран ? Это что обязательное условие кроссплатформенности, кто это утвердил ?

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

Код

string db 'Hello, World',0
virus file 'smapta.exe'
handler dd ?


Не сможешь потому, что это особенность компилятора. Если по критерию типа printf ты решаешь кроссплатформенный язык программирования или нет, то в таком случае C++ не кроссплатформенный, т.к. не имеет команд, которые имеют fasm, gas, nasm...


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
W4FhLF
Дата 11.1.2008, 16:49 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 3
Всего: 121



Ну ты танк smile)) 

Цитата(SABROG @  11.1.2008,  16:34 Найти цитируемый пост)
Возьми драйвер клавиатуры в линуксе (в свободном доступе лежит) и драйвер клавиатуры Windows (тоже в свободном доступе DDK) и сравни протокол взаимодействия с контроллером. И тогда мои слова сразу перестанут быть просто словами.


Так чё ж ты в дебри лезешь. Вся эта казуистика ни к чему, она бессмысленна. 
Я прошу самый простейший пример. Напиши исходник на ассемблере, который выводит в консоль строку "Hello World", чтобы я взял этот исходник, спокойно скомпилил его и там, и там, запустил и поверил. Не можешь написать? Почему? Мешают конструктивные особенности ОС? Вот и всё.

Цитата(SABROG @  11.1.2008,  16:34 Найти цитируемый пост)
Не сможешь потому, что это особенность компилятора. Если по критерию типа printf ты решаешь кроссплатформенный язык программирования или нет, то в таком случае C++ не кроссплатформенный, т.к. не имеет команд, которые имеют fasm, gas, nasm...


Ты не видишь разницы между компилятором и языком? Ассемблер - набор мнемоник, всё остальное - не ассемблер. Си описан официальным стандартом и printf является частью этого стандарта.

Добавлено через 2 минуты и 33 секунды
Цитата(SABROG @  11.1.2008,  16:34 Найти цитируемый пост)
Т.е. все-таки ты тянешь в сторону ОС, называя ее Платформой, а не архитектуру.


ok, давай возьмём архитектуру. Напиши мне "Hello World" на ассемблере, а я проверю его на x86 и на Mac smile


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.