Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Флейм
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.09.2011, 17:52
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию Компиляция бинарника

Нужно скомпилить код в бинарник. Не в exe или какой-нибудь elf, а в простой машинный код, без заголовков и прочей ереси. Должно получиться нечто на подобие .COM (только 32-битное). Мне не важно, какой язык, си или делфи. Главное - чтоб поддерживался встроенный ассемблер.
Кто-нибудь знает, чем и как это скомпилить? GCC/TCC/.../хзCC не предлагать, вся эта коллекция ГНУтых компиляторов не знает нормального встроенного ассемблера. Я уже пробовал ими компилить.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #2  
Старый 28.09.2011, 19:47
einstein einstein вне форума
Начинающий
 
Регистрация: 02.09.2010
Адрес: Город
Сообщения: 143
Репутация: -4653
По умолчанию

масм или тасм
Ответить с цитированием
  #3  
Старый 28.09.2011, 20:03
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Мне не важно, какой язык, си или делфи.
Чисто на асме я и так могу написать. Но мне надо скомпилировать язык высокого уровня в такой формат.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 28.09.2011 в 20:12.
Ответить с цитированием
  #4  
Старый 28.09.2011, 20:19
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Код:
gcc --save-temps ...
gcc -i ...
одна из этих команд позволит тебе получить вполне сносный код на асме, с которым ты можешь делать что угодно. В том числе править и компилить. Не понимаю, чем "ГНУтые" xCC тебя не устроили.

А зачем тебе, собственно, требуется это действие? Может, есть пути проще?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 28.09.2011, 21:14
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я уже через Gcc и Tcc компилил сразу в bin. Все ок, только встроенная асма там, очень мягко выражаясь, идиотская. ИМХО это -
Код:
__asm__ __volatile__(
        "rep ; movsl\n\t"
        "testb $2,%b4\n\t"
        "je 1f\n\t"
        "movsw\n"
        "1:\ttestb $1,%b4\n\t"
        "je 2f\n\t"
        "movsb\n"
        "2:"
        : "=&c" (d0), "=&D" (d1), "=&S" (d2)
        :"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
        : "memory");
не асма, а куча символов (Примерчик с сайта TCC, где написано, что портировано из GCC. А вообще у меня TCC писал, мол команды "mov" не существует).
А нужно это затем, что я пишу прогу для загрузочной флешки, она должна работать без оси. Писать весь код на асме не охота. Поэтому сейчас асмовый загрузчик и дальше хочу использовать высокоуровневые ЯП.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #6  
Старый 28.09.2011, 21:26
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

http://www.wasm.ru/article.php?article=asm_linux_for_c
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 28.09.2011, 21:29
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Мм. Тут асма конечно получе. Но тоже далеко не фонтан.
Спасибо, M.A.D.M.A.N.
Однако жду еще предложений. Это остается на крайний случай.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #8  
Старый 28.09.2011, 21:38
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не знаю, не знаю. Моё мнение, что MASM достаточно хорошо поддерживает различные конструкции для приближения к языку "высокого" уровня. К тому же имеются сторонние расширения, позволяющие работать с объектами.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 28.09.2011, 22:04
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Все-таки приближение к ЯП высокого уровня и ЯП высокого уровня вещи несопоставимые. Все равно ассемблер остается ассемблером.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #10  
Старый 28.09.2011, 22:08
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Никто и не спорит, но я не уверен, что Вам удастся найти именно то, что ищете.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 29.09.2011, 09:57
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Вообщем пока сделал так:
Компилирую через BCC32 (слава богу там встроенный ТАСМ), собираю через TLink32 и добиваю GCC'шным objcopy. Получаю нормальный Си с хорошим встроенным ассемблером. Правда нельзя использовать статические и глобальные переменные, а также первой должна быть функция Start, вызывающая main (потому что main ставится в конце кода при компиляции т.к. он вызывает многие другие функции). Ну, это издержки.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:02.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter