{{notification.text}}

MirGames

26.09.09 18:41
0
Надо написать простую функцию на ассемблере. В этом я ничего не понимаю.
Вот файл s.s:

.intel_syntax noprefix
.global lol
.type lol, @function
lol:
push ebx
ret

Результат:
$ cc s.s
s.s: Assembler messages:
s.s:6: Error: ambiguous operand size or operands invalid for `push'

Непонятно.
Времени в обрез )
Отредактировано: 26.09.09 18:43
#1
Швец, жнец, на дуде игрец
26.09.09 23:39
0
Как ни странно, у меня в mingw компилируется :)

Вам нужен ассемблер именно из GCC?
Ну и да, libastral к сожалению ничего не говорит мне о том, какая у вас операционная система (Linux? FreeBSD?), и какая версия компилятора gcc. :)

Можете еще попробовать www.fasm.org, у него синтаксис Intel и он абсолютно кроссплатформенный.
#2
27.09.09 01:43
0
У меня просто amd64, поэтому и не компилировалось.
Отредактировано: 27.09.09 01:43
#3
Студент
27.09.09 04:12
0
koljakolja
мб, какой-нибудь древний ассемблер, который не знает 32-х битных регистров? Хм. Врядли.

p.s. да и прога сама какие-то странные вещи делает: по идее будет ран-тайм выкидыш. Хотя я понимаю, что к компиляции это дела не имеет.

+ везде, где я видел, исопльзовалось такое начало:
.386
.model flat
label:
#4
27.09.09 05:33
0
Ну, я какбэ разобрался уже :)
Отредактировано: 27.09.09 05:33
#6
27.09.09 20:40
0
Pierre Kurochkin
Ассемблер на AMD64 не мог понять, 64-битный регистр указан или 32-х (по крайней мере я так понял).
#7
27.09.09 23:40
0
Ага, ebx нету у amd64. Есть rbx.
#8
Швец, жнец, на дуде игрец
28.09.09 16:17
0
Цитата(Pierre Kurochkin @ 27.09.2009 - 01:12) [snapback]98518[/snapback]

+ везде, где я видел, исопльзовалось такое начало:
.386
.model flat
label:

Это у Турбо Ассемблера такой синтаксис :)
В нулевом посте — GNU assembler для *никсов, если не ошибаюсь.
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}