您的位置:首页 > 其它

MAC下使用nasm编译汇编

2016-03-03 21:03 537 查看

汇编的基础知识

我们知道, 对于计算机的CPU而言, 无论是指令还是数据, 都是以机器码的形式存在于计算机当中。我们的高级语言都需要通过编译器或者解释器转化成机器码才能执行。

对于不同的CPU而言, 其可以识别的汇编语言并不相同, 这就决定了汇编语言并不具备良好的可移植性。所以我们在编译汇编代码的时候,需要注意汇编的代码是否与当前的机器CPU兼容。

NASM简介

nasm是一款开源的汇编语言编译器, 其官网在

http://www.nasm.us/


在这个官网上面, 我们可以找到开发文档和历史上的所有版本。

在mac os上配置nasm

首先, 我们会发现, 在我们的mac上面早已安装好了nasm,但是我们看版本的话

nasm -v


会发现这一个版本太过久远, 特别是不支持64位处理器代码的编译, 这将给我们带来极大的困难。所以, 我们需要将下载的最新版本的nasm来代替原有的老版本的nasm.

我们执行下面的语句:

which nasm
cp nasm <route of nasm>


将我们下载的nasm复制到指定的地点来覆盖原有的nasm,我们再次检查版本号,就会发现我们的nasm已经被我们更新到最新的版本了。

在mac上使用nasm

使用我们最熟悉的命令man来查询nasm支持的CPU框架, 我们得到下面的信息:

```
valid output formats for -f are (`*' denotes default):
* bin       flat-form binary files (e.g. DOS .COM, .SYS)
ith       Intel hex
srec      Motorola S-records
aout      Linux a.out object files
aoutb     NetBSD/FreeBSD a.out object files
coff      COFF (i386) object files (e.g. DJGPP for DOS)
elf32     ELF32 (i386) object files (e.g. Linux)
elf64     ELF64 (x86_64) object files (e.g. Linux)
elfx32    ELFX32 (x86_64) object files (e.g. Linux)
as86      Linux as86 (bin86 version 0.3) object files
obj       MS-DOS 16-bit/32-bit OMF object files
win32     Microsoft Win32 (i386) object files
win64     Microsoft Win64 (x86-64) object files
rdf       Relocatable Dynamic Object File Format v2.0
ieee      IEEE-695 (LADsoft variant) object file format
macho32   NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (i386) object files
macho64   NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (x86_64) object files
dbg       Trace of all info passed to output stage
elf       ELF (short name for ELF32)
macho     MACHO (short name for MACHO32)
win       WIN (short name for WIN32)


选择合适的框架, 现在的苹果MBP需要使用macho64来编译, 生成可执行文件, 然后就可以执行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: