2017-01-07 2 views
-1

Я изучаю ассемблер, и теперь увидел сценарий, но я не могу скомпилировать:Ошибка при компиляции простой сборки

section .text 
    global _start  ;must be declared for using gcc 
_start:      ;tell linker entry point 
    mov  edx, [ebp+input_file] 
    mov  eax, [edx+8] 
    movsx ecx, word ptr [eax] 
    push ecx 
    mov  edx, [ebp+input_file] 
    mov  eax, [edx+8] 
    push eax 
    mov  ecx, [ebp+var_8] 
    mov  edx, [ecx+2748h] 
    push edx 
    call memcpy 
    int  0x80  ;call kernel 
    mov  eax, 1  ;system call number (sys_exit) 
    int  0x80  ;call kernel 

section .data 

Когда я компилирую этот код с помощью:

nasm -f elf *.asm; ld -m elf_i386 -s -o demo *.o 

I получите этот результат:

Error: comma, colon, decorator or end of line expected after operand >
ld: cannot find *.o: No such file or directory

Как это исправить?

+2

Уверены ли вы, что номер этой строки не указан? Это помогло бы в случае более длительного источника, чтобы отметить строку, которая вызывает проблемы. – Ped7g

+0

именно это был фрагмент кода, который я попытался поместить в простой приветственный мировой скрипт. и теперь я вижу, что input_file, var_8 undefined @ Ped7g – reza

ответ

1

ptr - не определенное ключевое слово в NASM. Просто удалите его (в строке 6) и код будет скомпилирован:

movsx ecx, word [eax] 
Смежные вопросы