Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странные ошибки компилятора 
:(
    Опции темы
Xonxt
Дата 26.12.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 24.1.2006
Где: Украина / Одесса

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



Доброе время суток.

вот возникла необходимость написать программу на Ассемблере под Linux.
Столкнулся с проблемами. Преподаватель объяснил про различия синтаксиса, например, что нужно ставить знак прцента перед регистром.. это всё понятно.

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

Код

  .text   
  .globl main  
  main:  
    pushl $message
    call puts
    popl %ebx    
    ret
    
  .data  
  message:
    .string  "Hello, world\0"    


При создании объектного модуля:

Код
.../proga> as -o proga.o proga.s


Компилятор ругается, к примеру, на строчку
Код
popl %ebx

Дескать, suffix or operasnds invalid for 'pop'

Если исправить эту строчку так:

Код
pop ebx


То в объектный модуль компилится нормально, но при дальнейшей компиляции:

Код
.../proga> gcc -o proga.lnx proga.o


Оно опять ругается: undefined reference to 'ebx'


В чем же дело? Может че-то не так делаю? или не так компилирую?

У меня Linux Suse 10.2

Заранее благодарю





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


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


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

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



Xonxt
ОС 64-х битная или 32-х битная?
вообще для 32-х разрядной системы код абсолютно правильный
если ОС 64-х битная, то надо так
Код

.text   
  .globl main  
  main:  
    movq $message, %rdi
    call puts
    ret
    
  .data  
  message:
    .asciz  "Hello, world"   

если хочешь собрать 32-х битную версию ELF файла
добавь директиву .code32
Код

.code32
.text   
  .globl main  
  main:  
    pushl $message
    call puts
    popl %ebx
    ret
    
  .data  
  message:
    .asciz  "Hello, world"   

и ключ -m32 в gcc
Код

# gcc -m32 <файл> -o <бинарник>
 

Это сообщение отредактировал(а) MAKCim - 26.12.2007, 22:09


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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 24.1.2006
Где: Украина / Одесса

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



гг))
64-битная.. smile)

спасибо. smile

Можно ссылку на списочек еоманд для 64-битной?)
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 26.12.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Xonxt @  26.12.2007,  21:27 Найти цитируемый пост)
Можно ссылку на списочек еоманд для 64-битной?) 

здесь
и здесь


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

PM MAIL   Вверх
Xonxt
Дата 26.12.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 24.1.2006
Где: Украина / Одесса

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



Благодарю )

Только теперь оно мне при запуске поги выдает "ошибку сегментирования" smile)
Наверное, что--то из-за стека..
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 26.12.2007, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Xonxt
исправлено
см. выше



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

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Linux/Unix"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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