mac上nasm汇编helloworld
osx 10.9上自带的nasm版本比较低,然后不能编译64位的程序。
从www.nasm.us直接下载最新的版本;路径加入系统的PATH环境变量里面就好了。
mac上面的gcc编译.o
文件的时候默认的入口是_main
,而使用ld命令时,默认的是start
。
SECTION .data
msg: db "hello xiaozi!", 0x0a
len: equ $-msg
SECTION .text
global _main
kernel:
syscall
ret
_main:
mov rax,0x2000004
mov rdi,1
mov rsi,msg
mov rdx,len
call kernel
mov rax,0x2000001
mov rdi,0
call kernel
nasm -f macho64 -o asm1.o asm1.asm
ld -o asm1 -e _main asm1.o
./asm1
[...]http://type.so/assembly/mac-nasm-helloworld.html[...]
mac 下brew info nasm 的版本非常新,是2.11.06的。我看官方的最新的是2.11.08
谢谢!我现在在学习汇编,汇编环境真的让我好生纠结啊。
手里的教程是基于linux 32 环境的,然后开了虚拟机。很多代码我都跑不通,比如call puts 需要extern puts, 可是centos虚拟机又告诉我no such instruction: extern puts'`
本来想以mac 环境学习的,可是mac 汇编好像资源特别少,没有找到系统介绍mac 汇编的书籍。
求教楼主在Mac上用什么编辑器写汇编啊?
Sublime or vim
您好,我在连接的时候遇到了一些问题不知道该怎么解决啊
implicit entry/start for main executableGanYimingdeMacBook-Pro:Desktop ganyiming$ ld -o test -e _main test.o
ld: warning: -macosx_version_min not specified, assuming 10.8
Undefined symbols for architecture x86_64:
"_main", referenced from:
ld: symbol(s) not found for inferred architecture x86_64
请问这是什么问题啊
这可错误也可以通过在ld命令上添加 -lSystem 参数来避免。
我刚刚也遇到这个问题,把.asm文件的程序入口改成_main就好了
求教:我的可以执行第一句,但执行第二句出现“-bash: ld: command not found”,请问高手是怎么回事?
ld命令没有,你可以尝试安装一下xcode的命令行工具
你好前辈,您可以发表一篇在OS X 10.9.2上进行汇编练习的一个完整的步骤吗?甚至包括命令行什么的都写出来。
刚开始学习汇编,这方面的知识不是很懂,请您辛苦一下吧~~~
我也刚开始学,资料都是google来的
[code lang=text]print('哇')[/code]
biu~
回复竟然木有设置邮件提醒,为啥@@?
好吧,为了效率。
hao ba @@