nasm編譯
A. 在ubuntu 10.10安裝好了nasm 可是我想編譯一段代碼卻總是錯誤
意思是org指令 後邊的沒有偏移量或者偏移量是無效的,改改試試看。
B. 如何在Windows下編譯開源項目,比如NASM等
一般開源項目的源碼里,解壓以後都會有README這個文檔,按照他裡面說的方法來做就行了
windows平台下一般需要用到nmake,因為基本都針對的vc平台,或者mingw
所以涉及到配置namke和gnu make的編譯環境,vc的話直接啟動vs控制台,然後在裡面輸入nmake -f makefile就行了
gnu make也一樣
不過我覺得直接下個二進制文件包就行了噻,沒必要自己重新編譯一次,費時費力
開源項目,只要不是編譯出來很大的,都會在放出最新版本的同時添加二進制文件包的下載,直接下載一個就行了,比如nasm,我就直接下那個nasmXXXX.zip(xxx是版本號)
C. 我下了個nasm編譯器,但不知道應該怎麼使用,麻煩用過的人可以教教我,謝謝!!!
一般用nasm都是把匯編文件.asm編譯成執行文件.bin格式的二進制文件
先要找到你想編譯的文件,我的是在F盤OS文件夾下!
第一步:先轉到你自己的文件夾下!如圖,先輸入F:
跳到F:目錄下,再用cd命令轉換路徑(OS是我自己的文件夾下,你自己用你自己的)
第二步:就是編譯了!如圖nasma.asm-ot.bin
其中a.asm是你要編譯的文件,t.bin是編譯後的文件,名字自定!
編譯之後就已經成功了!!!
D. 怎麼在64位系統下編譯nasm
用記事本寫代碼
用命令編譯
nasm -f <format> <filename> [-o <output>]
-f後面是輸出格式,具體的用nasm -hf查詢
filename是代碼文件名
-o後面是輸出文件名
如果輸出類型的是一種object file的話要用鏈接器鏈接
一切操作都要在命令行下完成,如果不習慣命令行操作不建議用
E. 請問NASM編譯器在哪下載,誰能給我一個官網的下載地址,謝謝!
1,官網:http://www.nasm.us/
2,官網最新版下載地址:http://www.nasm.us/pub/nasm/releasebuilds/2.11.09rc1/win32/nasm-2.11.09rc1-installer.exe
3,送上學習網站:http://www.mouseos.com/assembly/nasm02.html
F. NASM的源代碼用什麼編譯器來編譯
visual
studio
code僅僅是一個
代碼編輯器
(相當於一個
高級記事本
),不是IDE。
要寫java代碼建議使用eclipse
G. 用nasm編譯時出現unable to open inlude file 'pm.inc'(源代碼第一行是 %include 「pm.inc」)
pm.inc 應當是你自己提供的。
H. 用NASM能將asm結尾的文件編譯成exe么該怎麼處理
可以吧,選擇相應平台的版本,nasm -h 有簡單的幫助的。
對 x86 也可以使用 Masm5/6 或 Masm32 來做,分別是 dos16 類或 Win32 類的程序。
不同匯編軟體,對 asm 源程序的格式要求和支持也可能是不一樣的。
I. win7的操作系統打不開匯編編譯器(yasm&nasm)
編譯器本身就是這樣的,單純是個命令行工具,無窗口。
你應該找的是與此對應的IDE,
或直接用命令行編譯鏈接。
J. 如何在64位的Linux系統上使用匯編和C語言混合編程 第2頁
編譯和鏈接的時候使用的指令:(AMD處理器,64位操作系統)
編譯鏈接指令
1 nasm -f elf foo.s -o foo.o
2 gcc -c bar.c -o bar.o
3 ld -s -o foobar bar.o foo.o
匯編語言用nasm編寫並用nasm編譯器編譯,而C語言用的是gcc編譯,這些都沒有問題,但是在鏈接的時候出錯了,提示如下:
ld: i386 architecture of input file `foo.o' is incompatible with i386:x86-64 output
google了一下,意思就是nasm 編譯產生的是32位的目標代碼,gcc 在64位平台上默認產生的是64位的目標代碼,這兩者在鏈接的時候出錯,gcc在64位平台上默認以64位的方式鏈接。
這樣在解決的時候就會有兩種解決方案:
<1> 讓gcc 產生32位的代碼,並在鏈接的時候以32位的方式進行鏈接
在這種情況下只需要修改編譯和鏈接指令即可,具體如下:
32位的編譯鏈接指令
1 nasm -f elf foo.s -o foo.o
2 gcc -m32 -c bar.c -o bar.o
3 ld -m elf_i386 -s -o foobar foo.o bar.o
具體的-m32 和 -m elf_i386 請自行查閱gcc (man gcc)
如果你是高版本的gcc(可能是由於更新內核造成的),可能簡單的使用-m32 的時候會提示以下錯誤(使用別人的歷程,自己未曾遇到):
> In file included from /usr/include/stdio.h:28:0,
> from test.c:1:
> /usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
> compilation terminated.
這應該是缺少構建32 位可執行程序缺少的包,使用以下指令安裝:
sudo apt-get install libc6-dev-i386
此時應該就沒有什麼問題了。