Код ассемблера не работает в Linux - PullRequest
1 голос
/ 19 ноября 2010

Я пытаюсь запустить следующий ассемблерный код в Linux с помощью компилятора JWasm.Но для всех команд сказано, что команда не найдена.Зачем?И он возвращает ошибку в строках, которая начинается с «;».Это своего рода строка комментария?Могу ли я удалить эти строки?Спасибо.

;--- "hello world" for 64-bit Linux, using SYSCALL.
;--- assemble: JWasm -elf64 -Fo=Lin64_1.o Lin64_1.asm
;--- link:     gcc Lin64_1.o -o Lin64_1


stdout    equ 1
SYS_WRITE equ 1
SYS_EXIT  equ 60

.data

string  db 10,"Hello, world!",10

.code

_start:
mov edx, sizeof string
mov rsi, offset string
mov edi, stdout
mov eax, SYS_WRITE
syscall
mov eax, SYS_EXIT
syscall

end _start

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Я незнаком с JWasm, но обычно неотмеченные записи являются директивами ассемблера, а не инструкциями.

Вы хотите поместить (пробел / табуляцию) для любых реальных инструкций ассемблера (вещей, которые будет запускать процессор), а не директивы ассемблера (вещи, которые ассемблер использует, чтобы помочь вам)

0 голосов
/ 19 ноября 2010

; обычно обозначает комментарии в большинстве видов сборок, странно, что JWasm не распознает строки как таковые. Попробуйте удалить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...