![]() |
|
|
![]()
|
|
| rei3er |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
раз плюнуть открываем спецификацию на нужный формат исполняемых файлов дальше через fread/fwrite/fopen вставляем что надо куда надо с учетом формата напиши и чтобы она потом работала на x86, x86-64, MIPS, PowerPC, ... перекомпилировать можно, переписывать нельзя компилятором можешь любым пользоваться на С так
абсолютная кроссплатформенность, пойдет на всех вышеназванных платформах приведешь пример на ассемблере, тогда и будет ассемблер кроссплатформенным Это сообщение отредактировал(а) rei3er - 11.1.2008, 17:33 |
||||
|
|||||
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Не вижу никакой разницы между тем, чтобы реализовывать printf для известных платформ в одном исходники и выбирать нужную на этапе компиляции и между тем, чтобы компилятор сам подставлял нужную реализацию printf. Результат один - работающая программа.
Ассемблерщик сам себе кроссплатформист, он может сам выбрать будет ли язык кроссплатформенным или не будет, это в его власти в отличае от программистов на ЯВУ.
Не правильно, ты не сможешь на этапе компиляции вставить любой набор байтов в середину программы или в секцию данных. Например:
Если смотреть в отладчике или дизассемблере то после джампа будут идти байты из файла musor.bin, но дебаггер или отладчик его попытаются преобразовать в код.
А и не надо переписывать, внутри одного .asm файла будут все возможные реализации одной инструкции для каждой платформы, а препроцессор сам будет выбирать нужную реализацию исходя из операционной системы на которой производится компиляция. Т.е. совершенно прозрачно для юзера. Это сообщение отредактировал(а) SABROG - 11.1.2008, 17:44 |
||||||
|
|||||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
SABROG, я тебя понимаю, но сейчас вопрос стоит не так: "А что было бы, если бы...", вопрос стоит: "Является ли?", т.е. на данный момент.
Да и дело тут даже не в возможности, а просто в понимании того, что ассемблер, как набор мнемоник исполняемых отдельным процессором, нельзя назвать кроссплатформенным по определению, т.к. он не имеет никакой абстракции и не может её иметь. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| rei3er |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
а если на некоторых платформах нет аналогов элементов других платформ? SGDT, LGDT, STR, LTR, INVLPG, WBINVD к примеру как будем ВОЗ реализовывать? |
|||
|
||||
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Вот два кода, один Hello, World для линукса, другой для DOS'a. Не вижу никаких препятствий объединить эти два разных кода в один, создать макрос и препроцессорными средствами выбирать один из них:
//Linux
//DOS
А если на некоторых платформах нет математического сопроцессора ты как поступаешь ? А если на одном процессоре есть 3d Now!, а на другом нету как программы пишут ? Это сообщение отредактировал(а) SABROG - 11.1.2008, 18:00 |
||||||
|
|||||||
| rei3er |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
||||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Не вопрос, вот спека 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 |
|||
|
||||
| rei3er |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
||||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| rei3er |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
||||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Нет, пожалуйста, если есть компилятор, который MIPS'ы еще поддерживает то не вопрос. Я не думаю что все известные компиляторы C++ поддерживают MIPSы. Это что делает язык не кроссплатформенным ? Я вообще считаю достоточно 2 платформы, чтобы назвать язык кроссплатформенным.
Ну это ты не напишешь. А нормальные программисты всегда затыкали дырки эмуляторами или кодом, который делает тоже самое, пусть и медленно. Программа ведь не перестает работать с оптимизацией под SSE или без нее, потому что есть код, который заменяет эти возможности. Это сообщение отредактировал(а) SABROG - 11.1.2008, 18:29 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
Т.е.? Компилятору достаточно поддерживать одну платформу, ибо, если он написан в соответствии со стандартом, то ему плевать под какую платформу написан hello.cpp, он её транслирует в соответствующий набор команд. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Ему не плевать под какую платформу компилить, если он не знает ничего о новом процессоре, то и программа не будет на нем работать. Т.е. пока сам разработчик не отредактирует компилятор включив в него возможность компилить программы для других платформ программы на них работать не будут. И что тогда получится, если я сейчас спаяю процессор на коленке, то смогу сказать, что язык C++ не кроссплатформенный, т.к. компилятор GCC или MSVC, или BC не знают ничего о моем процессоре. Вот вы такой логикой руководствуетесь. Fasm, nasm, gas уже знают больше 1 платформы, а значит кросплатформенные. Причем не только по коду, но и по архитектуре. |
|||
|
||||
| W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 3 Всего: 121 |
Как он может ничего не знать о процессоре под который писался?
Вдолби себе одно: "Язык != Компилятор" и всё станет ясно. А так, это бессмыслица уже даже не смешит. Пиши свои "1+1" и радуйся жизни, а я удаляюсь из этой бредовой дискуссии. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
|
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |