0

はじめに、私は地元の大学でシステム プログラミングを学んでいます。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.

関連する質問です。問題が解決するかどうかはわかりません(解決しないと思います):

私は現在、定数と syscall コードをハードコーディングしています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

私の教授は、これらすべてを既に含むファイルがあると述べていましたが、それを含めることができましたが、その方法については言及していませんでした. 私はそのようなことを行う方法を見つけることができませんでした。また、syscode を検索する必要がないように、win と同等のものも知りたいです。別名、Windowsでアセンブルするためにインクルードを変​​更するだけです。

4

0 に答える 0