Fibonacci sequence是一个很棒的'hello-world‘应用,当你开始学习一门新语言的时候。我想做一个纯粹的机器程序来执行,而不会在中间VM上浪费任何资源,不需要不必要的内存管理等。
最好的解决方案是写下汇编代码并将其编译成本机二进制文件。但是我从来没有用过汇编语言,那么从哪里开始最好呢?
我使用的是iMac 64位双核x86系统。
发布于 2011-11-30 03:49:08
使用汇编语言很有趣,也是学习更多内部机制的好方法。我不确定您是否在使用objective-c计算斐波那契数列时浪费了那么多资源,但也许您可以证明我是错的。
为了学习汇编,从一些非常简单的东西开始,然后添加更多的函数以及输入和输出,以理解系统调用和函数调用序列,然后变得更有创造性。
一定要记录每一行代码,因为它很难维护汇编。
对于Mac OS X
创建一个名为simple.asm的文件:-
; simple.asm - exit
section .text
global simple ; make the main function externally visible
simple:
mov eax, 0x1 ; system call number for exit
sub esp, 4 ; OS X (and BSD) system calls needs "extra space" on stack
int 0x80 ; make the system call编译并链接它:
nasm -f macho simple.asm
ld -o simple -e simple simple.o运行它:-
asm $ ./simple
asm $ echo $?
1网上有很多免费的x86汇编资源,以及英特尔64位的具体细节。
http://en.wikibooks.org/wiki/X86_Assembly
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
查看bsd内核的系统调用资源和osx特定系统调用的mach内核资源。
http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html
http://peter.michaux.ca/articles/assembly-hello-world-for-os-x
如果你想创建库,可以看看链接器和加载器。
https://stackoverflow.com/questions/8316048
复制相似问题