无法识别yasm常量和sys代码/ ld文件:无法识别文件格式

时间:2015-11-02 22:48:48

标签: assembly constants ld yasm

前言,我正在当地大学进行系统编程。我们在vBox上使用Ubuntu与yasm组装并运行我们的程序。我有正常运行的代码,但我相信vm开销导致时序执行问题。我们正在开发一个线程程序。

我想在我的原生win7安装上组装并运行该程序,但是出现链接错误。我在Windows上使用的命令是:

yasm -f x64 hw12.asm
ld -o hw12.exe hw12.obj

它汇编,但当我链接时,我得到hw12.obj: file not recognized: File format not recognized

以下是版本信息:

yasm --version
yasm 1.3.0
Compiled on Aug 17 2014.
Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.
Run yasm --license for licensing overview and summary.

ld --version
GNU ld (GNU Binutils) 2.25.1
Copyright (C) 2014 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

一个相关的问题,我不知道它是否会解决问题(我假设不会):

我目前在section .data中对常量和系统调用代码进行硬编码。以下是供参考的代码:

section .data

; -----
;  Define standard constants.

LF          equ 10          ; line feed
NULL        equ 0           ; end of string
ESC         equ 27          ; escape key

TRUE        equ 1
FALSE       equ 0

SUCCESS     equ 0           ; Successful operation
NOSUCCESS   equ 1           ; Unsuccessful operation

STDIN       equ 0           ; standard input
STDOUT      equ 1           ; standard output
STDERR      equ 2           ; standard error

SYS_read    equ 0           ; system call code for read
SYS_write   equ 1           ; system call code for write
SYS_open    equ 2           ; system call code for file open
SYS_close   equ 3           ; system call code for file close
SYS_fork    equ 57          ; system call code for fork
SYS_exit    equ 60          ; system call code for terminate
SYS_creat   equ 85          ; system call code for file open/create
SYS_time    equ 201         ; system call code for get time

我的教授曾提到有一个文件已包含所有这些,可以包含但未提及如何。我一直无法找到如何做这样的事情,并且也想知道win的等价物,以便不必查找系统代码。又名我只是改变了包含以便在Windows上组装。

0 个答案:

没有答案