Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
Питекантроп
248 / 142 / 21
Регистрация: 14.06.2010
Сообщений: 340
#1

[NASM] Не компилирует в Windows - Assembler

02.01.2012, 02:20. Просмотров 876. Ответов 5
Метки нет (Все метки)

есть код на nasm:
Assembler
1
2
3
4
5
6
section .text 
global MyFun:function
 
MyFun:
       ..........
       ret
На линуксе из этой функции успешно создаем объектный файл
nasm -f elf fun.asm
и подключаем его к с++ проекту
g++ main.c fun.o
В main.c функция объявлена таким образом
C++
1
extern "C" double MyFun(double x);
В линуксе все работает.
Пытаюсь сделать это в винде
Создаю объектный файл
nasm -f obj fun.asm
Ругается на строчку MyFun: и пишет OBJ supports no special symbol for this symbol type
Ради эксперимента убираю сию строчку. Ошибок нет. Теперь пытаюсь подключить файл к с++
g++ main.c fun.obj
Теперь ругается на fun.obj: File format not recognized.
Как же мне таки решить проблему?

http://www.cyberforum.ru/assembler-windows/thread660011.html

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2012, 02:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос [NASM] Не компилирует в Windows (Assembler):

[NASM] Вывод на экран
Есть код(NASM) global _start section .text _start: mov eax,3 add eax,2 ...

[NASM] Ошибка сегментирования
Я только учусь так что сильно не орите. Код изначально написан на tasm под...

NASM. Ошибка сегментирования
Уже второй день не знаю как решить эту проблему. Всегда, когда я выделяю память...

Компиляция при помощи NASM
Я только-только начинающий, почитал некоторое количество материала по...

[NASM (GAS)] Stack overflow
Почему при передачи массива float из более чем 255 элементов возникает...

5
murderer
3314 / 1461 / 133
Регистрация: 06.10.2010
Сообщений: 3,215
02.01.2012, 09:23 #2
Так компилируется
Assembler
1
2
3
4
section .text
global MyFun
MyFun:
ret
1
Питекантроп
248 / 142 / 21
Регистрация: 14.06.2010
Сообщений: 340
03.01.2012, 01:47  [ТС] #3
компилируется. Но при подключении к проекту с++
g++ main.c fun.o
g++ сообщает, что не найдена ссылка на функцию MyFun
в файле main.c MyFun объявлена
C++
1
extern "C" int MyFun(int x);
0
murderer
3314 / 1461 / 133
Регистрация: 06.10.2010
Сообщений: 3,215
03.01.2012, 09:29 #4
Всё - разобрался:
1) Линкер C добавляет к именам функций чёрточку, поэтому пишем asm-файл так
Assembler
1
2
3
4
5
use32
section .text
global _MyFun
_MyFun:
ret
2) Для создания 32-битного obj нужно компилировать в NASM следующим образом:
Код
nasm -f win32 1.asm
3) Желательно явно указывать соглашение о вызове функции
C
1
extern "C" int __cdecl MyFun(double x);
Добавлено через 1 минуту
Проверял на Visual Studio 2010
1
Питекантроп
248 / 142 / 21
Регистрация: 14.06.2010
Сообщений: 340
04.01.2012, 03:41  [ТС] #5
Цитата Сообщение от murderer Посмотреть сообщение
Линкер C добавляет к именам функций чёрточку
попробуй догадайся, что он черточку добавляет . К тому же в линуксе, получается, не добавляет
0
vital792
1997 / 1269 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
04.01.2012, 10:01 #6
ага - это микрософт любит всякие черточки подрисовывать) http://msdn.microsoft.com/en-US/library/x7kb4e2f%28v=VS.80%29.aspx

Добавлено через 25 минут
хотя зря я так про них. Другие компиляторы не отстают) http://en.wikipedia.org/wiki/Name_mangling
1
04.01.2012, 10:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2012, 10:01
Привет! Вот еще темы с решениями:

NASM: Нахождение максимального элемента в матрице
нужно найти максимального элемента в матрице (4х4) на насме и в линуксе на...

[NASM] Реализовать алгоритм, заданный на языке C
Помогите пожалуйста переписать небольшой код С в NASM. #include <stdio.h>...

Битовые операции, система уравнений (nasm)
Как решить такую задачу, помогите пожалуйста. На вход программе подаются...

[NASM] Реализовать алгоритм, заданный на языке C
здравствуйте ю можете помочь перевести с С зыка на ассамблер . intel процессор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru