![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Нужно скомпилить код в бинарник. Не в exe или какой-нибудь elf, а в простой машинный код, без заголовков и прочей ереси. Должно получиться нечто на подобие .COM (только 32-битное). Мне не важно, какой язык, си или делфи. Главное - чтоб поддерживался встроенный ассемблер. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Кто-нибудь знает, чем и как это скомпилить? GCC/TCC/.../хзCC не предлагать, вся эта коллекция ГНУтых компиляторов не знает нормального встроенного ассемблера. Я уже пробовал ими компилить.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 масм или тасм 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Последний раз редактировалось Bargest, 28.09.2011 в 20:12.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Код: 
	gcc --save-temps ... gcc -i ... А зачем тебе, собственно, требуется это действие? Может, есть пути проще?  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Я уже через 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");А нужно это затем, что я пишу прогу для загрузочной флешки, она должна работать без оси. Писать весь код на асме не охота. Поэтому сейчас асмовый загрузчик и дальше хочу использовать высокоуровневые ЯП.  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Мм. Тут асма конечно получе. Но тоже далеко не фонтан. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Спасибо, M.A.D.M.A.N. Однако жду еще предложений. Это остается на крайний случай.  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Не знаю, не знаю. Моё мнение, что MASM достаточно хорошо поддерживает различные конструкции для приближения к языку "высокого" уровня. К тому же имеются сторонние расширения, позволяющие работать с объектами. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Все-таки приближение к ЯП высокого уровня и ЯП высокого уровня вещи несопоставимые. Все равно ассемблер остается ассемблером. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Никто и не спорит, но я не уверен, что Вам удастся найти именно то, что ищете. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Вообщем пока сделал так: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Компилирую через BCC32 (слава богу там встроенный ТАСМ), собираю через TLink32 и добиваю GCC'шным objcopy. Получаю нормальный Си с хорошим встроенным ассемблером. Правда нельзя использовать статические и глобальные переменные, а также первой должна быть функция Start, вызывающая main (потому что main ставится в конце кода при компиляции т.к. он вызывает многие другие функции). Ну, это издержки. ![]()  |