Поиск:

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


Новичок



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

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



Цитата(SABROG @  11.1.2008,  16:34 Найти цитируемый пост)
Например используя стандартные средства C++ напиши кроссплатформенную программу, которая будет иметь инструкцию вставки любого файла в секцию данных

раз плюнуть
открываем спецификацию на нужный формат исполняемых файлов
дальше через fread/fwrite/fopen вставляем что надо куда надо с учетом формата  smile  
Цитата(SABROG @  11.1.2008,  15:26 Найти цитируемый пост)
А теперь подумай, если я ограничусь языком одного ассемблера и напишу программу, которая будет складывать 1+1. То чем она будет отличаться от C++ или Php, чем она не кроссплатформенна ?

напиши
и чтобы она потом работала на x86, x86-64, MIPS, PowerPC, ...
перекомпилировать можно, переписывать нельзя
компилятором можешь любым пользоваться
на С так
Код

int main() {
    return 1 + 1;
}

абсолютная кроссплатформенность, пойдет на всех вышеназванных платформах
приведешь пример на ассемблере, тогда и будет ассемблер кроссплатформенным  smile 

Это сообщение отредактировал(а) rei3er - 11.1.2008, 17:33
PM MAIL   Вверх
SABROG
Дата 11.1.2008, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



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

Ассемблерщик сам себе кроссплатформист, он может сам выбрать будет ли язык кроссплатформенным или не будет, это в его власти в отличае от программистов на ЯВУ.

Цитата

раз плюнуть
открываем спецификацию на нужный формат исполняемых файлов
дальше через fread/fwrite/fopen вставляем что надо куда надо с учетом формата


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

Код

код
jmp next
myfile file 'musor.bin'
next:
продолжение кода


Если смотреть в отладчике или дизассемблере то после джампа будут идти байты из файла musor.bin, но дебаггер или отладчик его попытаются преобразовать в код.

Цитата

переписывать нельзя


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

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


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


found myself
****


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

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



SABROG, я тебя понимаю, но сейчас вопрос стоит не так: "А что было бы, если бы...", вопрос стоит: "Является ли?", т.е. на данный момент. 

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




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


Новичок



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

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



Цитата(SABROG @  11.1.2008,  17:35 Найти цитируемый пост)
А и не надо переписывать, внутри одного .asm файла будут все возможные реализации одной инструкции для каждой платформы, а препроцессор сам будет выбирать нужную реализацию исходя из операционной системы на которой производится компиляция. Т.е. совершенно прозрачно для юзера.

а если на некоторых платформах нет аналогов элементов других платформ? 
SGDT, LGDT, STR, LTR, INVLPG, WBINVD к примеру
как будем ВОЗ реализовывать?
 smile 
PM MAIL   Вверх
SABROG
Дата 11.1.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



Вот два кода, один Hello, World для линукса, другой для DOS'a. Не вижу никаких препятствий объединить эти два разных кода в один, создать макрос и препроцессорными средствами выбирать один из них:

//Linux
Код

section .data
    hello:     db 'Hello world!',10    ; 'Hello world!' plus a linefeed character
    helloLen:  equ $-hello             ; Length of the 'Hello world!' string
                                       ; (I'll explain soon)

section .text
    global _start

_start:
    mov eax,4            ; The system call for write (sys_write)
    mov ebx,1            ; File descriptor 1 - standard output
    mov ecx,hello        ; Put the offset of hello in ecx
    mov edx,helloLen     ; helloLen is a constant, so we don't need to say
                         ;  mov edx,[helloLen] to get it's actual value
    int 80h              ; Call the kernel

    mov eax,1            ; The system call for exit (sys_exit)
    mov ebx,0            ; Exit with return code of 0 (no error)
    int 80h


//DOS
Код

 org 100h

    mov    dx, message
    mov    ah, 9
    int    21h

    int    20h

 message db "Hello, world!$"


Цитата

а если на некоторых платформах нет аналогов элементов других платформ? 
SGDT, LGDT, STR, LTR, INVLPG, WBINVD к примеру
как будем ВОЗ реализовывать?


А если на некоторых платформах нет математического сопроцессора ты как поступаешь ? А если на одном процессоре есть 3d Now!, а на другом нету как программы пишут ?

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


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


Новичок



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

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



Цитата(SABROG @  11.1.2008,  17:54 Найти цитируемый пост)
Вот два кода, один Hello, World для линукса, другой для DOS'a.

под Linux не работает (MIPS)
 smile 
PM MAIL   Вверх
SABROG
Дата 11.1.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



Цитата(rei3er @ 11.1.2008,  17:57)
Цитата(SABROG @  11.1.2008,  17:54 Найти цитируемый пост)
Вот два кода, один Hello, World для линукса, другой для DOS'a.

под Linux не работает (MIPS)
 smile

Не вопрос, вот спека http://dkrizanc.web.wesleyan.edu/courses/2...7/mips-spim.pdf

Преобразовывай инструкции в машинный код и вставляй, любой компилятор схавает. Все в твоих руках.

Тут попонятнее http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

О, коллекция Hello Worldов для разных архитектур http://www.roesler-ac.de/wolfram/hello.htm

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


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


Новичок



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

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



Цитата(SABROG @  11.1.2008,  18:09 Найти цитируемый пост)
Преобразовывай инструкции в машинный код и вставляй, любой компилятор схавает. Все в твоих руках. 

а где кроссплатформенность?

Это сообщение отредактировал(а) rei3er - 11.1.2008, 18:14
PM MAIL   Вверх
W4FhLF
Дата 11.1.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Цитата(rei3er @  11.1.2008,  18:14 Найти цитируемый пост)
а где кроссплатформенность?


на кончиках пальцев smile


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


Новичок



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

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



Цитата(SABROG @  11.1.2008,  17:54 Найти цитируемый пост)
а на другом нету как программы пишут ?

мы поэтому и не напишем ничего
еще один показатель отсутствия кроссплатформенности
вообщем спор бесполезен

ps. признать свою неправоту не позорно  smile 

Это сообщение отредактировал(а) rei3er - 11.1.2008, 18:24
PM MAIL   Вверх
SABROG
Дата 11.1.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



Нет, пожалуйста, если есть компилятор, который MIPS'ы еще поддерживает то не вопрос. Я не думаю что все известные компиляторы C++ поддерживают MIPSы. Это что делает язык не кроссплатформенным ? Я вообще считаю достоточно 2 платформы, чтобы назвать язык кроссплатформенным.

Цитата

мы поэтому и не напишем ничего
еще один показатель отсутствия кроссплатформенности
вообщем спор бесполезен


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

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


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


found myself
****


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

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



Цитата(SABROG @  11.1.2008,  18:26 Найти цитируемый пост)
 Я не думаю что все известные компиляторы C++ поддерживают MIPSы


Т.е.? Компилятору достаточно поддерживать одну платформу, ибо, если он написан в соответствии со стандартом, то ему плевать под какую платформу написан hello.cpp, он её транслирует в соответствующий набор команд. 




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


Hacker
****


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

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



Цитата(W4FhLF @ 11.1.2008,  18:33)
Цитата(SABROG @  11.1.2008,  18:26 Найти цитируемый пост)
 Я не думаю что все известные компиляторы C++ поддерживают MIPSы


Т.е.? Компилятору достаточно поддерживать одну платформу, ибо, если он написан в соответствии со стандартом, то ему плевать под какую платформу написан hello.cpp, он её транслирует в соответствующий набор команд.

Ему не плевать под какую платформу компилить, если он не знает ничего о новом процессоре, то и программа не будет на нем работать. Т.е. пока сам разработчик не отредактирует компилятор включив в него возможность компилить программы для других платформ программы на них работать не будут. И что тогда получится, если я сейчас спаяю процессор на коленке, то смогу сказать, что язык C++ не кроссплатформенный, т.к. компилятор GCC или MSVC, или BC не знают ничего о моем процессоре. Вот вы такой логикой руководствуетесь. Fasm, nasm, gas уже знают больше 1 платформы, а значит кросплатформенные. Причем не только по коду, но и по архитектуре.


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


found myself
****


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

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



Цитата(SABROG @  11.1.2008,  18:44 Найти цитируемый пост)
Ему не плевать под какую платформу компилить, если он не знает ничего о новом процессоре, то и программа не будет на нем работать.


Как он может ничего не знать о процессоре под который писался? 

Цитата(SABROG @  11.1.2008,  18:44 Найти цитируемый пост)
Fasm, nasm, gas уже знают больше 1 платформы, а значит кросплатформенные.


Вдолби себе одно: "Язык != Компилятор" и всё станет ясно.

А так, это бессмыслица уже даже не смешит. Пиши свои "1+1" и радуйся жизни, а я удаляюсь из этой бредовой дискуссии. 


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


Вселенский отказник
****


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

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



Цитата

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


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

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

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


 




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


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

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