首页 > 解决方案 > 汇编器代码编译引发链接器错误

问题描述

我有一个我正在尝试做的挑战,我想将一些汇编代码翻译成 c 代码。我目前正在尝试做的是将汇编代码编译成可执行文件,然后将其反编译成 c 代码(如果您知道更简单的方法,请提醒我)

但是,在使用nasm -f elf main.asmand编译代码时gcc -o main main.o(我也用过gcc -m32 -o main main.o无济于事)

第一个命令运行没有错误,而后者失败返回:

Undefined symbols for architecture i386:
  "_main", referenced from:
     implicit entry/start for main executable

我知道汇编代码并不完美,我的目标不是能够运行程序,而只是想看看它作为 C 代码是什么样的。

section .text
  global _main
_main:
  jmp 0x40
  pop eax
  mov ecx, eax
  mov ebx, 0x0
  mov edx, 0x53
  xor eax, eax
  mov al,BYTE [ecx+ebx*1]
  or cl,BYTE [edx]
  push ebx
  push ecx
  push eax
  mov ecx, esp
  mov eax, 0x4
  mov ebx, 0x1
  push edx
  mov edx, 0xa000001
  or al,BYTE [eax]
  int 0x80
  pop edx
  pop ecx
  pop ecx
  pop ebx
  inc ebx
  inc ebx
  dec edx
  jne 0x13
  mov eax,0x1
  mov ebx,0xa0a0000
  add BYTE [eax],al
  int 0x80
  call 0x8

我试过删除下划线,然后_start改用。我能做些什么来编译这段代码?

标签: assemblycompiler-errorscompilationx86

解决方案


推荐阅读