64的匯編編譯器
『壹』 匯編有哪些軟體
匯編編程常用的軟體有多種,以下是一些主要的選項:
1. **MASM(Microsoft Macro Assembler)**:這是微軟官方開發的匯編語言編譯器,支持多種指令集架構,包括x86和x64。MASM擁有可視化的開發界面,編譯速度快,且支持Win32Asm等特性,是Windows下開發匯編程序的利器。它提供了豐富的宏功能和調試工具,適合初學者和專業人士使用。
2. **NASM(Netwide Assembler)**:NASM是一款功能強大且免費的匯編器,支持多種操作系統平台,包括Windows、Linux和macOS。其設計初衷是為了實現編譯器程序的跨平台和模塊化特性。NASM的語法簡潔明了,易於學習和使用,廣泛應用於跨平台和嵌入式系統的匯編語言編程中。
3. **TASM(Turbo Assembler)**:TASM是Borland公司開發的匯編編譯器,雖然它最初是為DOS環境設計的,但至今仍在某些老式系統和兼容性測試中保有一席之地。TASM支持多種指令集,包括Intel x86和Pentium處理器系列,具有編譯快速和用戶友好的特點。
4. **FASM(Flat Assembler)**:FASM是一款自由且功能強大的匯編器,以其盡可能簡化匯編語言編程的設計理念而著稱。它支持多種輸出格式,並允許訪問高級編程特性,具有編譯速度快和自包含等特點。
5. **GAS(GNU Assembler)**:GAS是GNU工具鏈中的一部分,是GNU計劃所使用的匯編器,支持多種計算機體系結構,如x86、ARM和MIPS。它是開源的,並且具有豐富的文檔和社區支持。
此外,還有一些其他匯編編程軟體,如RadASM等,它們也各有特色,適用於不同的開發場景和需求。在選擇匯編編程軟體時,需要考慮目標平台、指令集支持、編程環境以及個人偏好等因素。
『貳』 如何在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
此時應該就沒有什麼問題了。
『叄』 64位系統的匯編用什麼編譯器呢 64位系統的DD,DW,DB占幾個位元組呢
用DOS DEBUG試試,DEBUG模擬的是16位,XP是32位。64位操作系統應該也一樣。
你可以寫段代碼測試不同類型佔位元組
datasg segment
dd ffaabbcc,0,0,0
dw ffaa,0,0,0,0,0,0,0
db,ff,0,0,0,0,0,0,0,0,0,0,0,0,0,0
datasg ends
『肆』 匯編語言編譯器有哪些
匯編語言編譯器有多種,其中包括MASM、NASM、TASM、FASM和GAS等。
首先,MASM是微軟開發的一款匯編語言編譯器,它支持x86架構的計算機,並提供完整的x86指令集。MASM具有強大的功能,如宏定義、條件編譯和模塊化編程,使得程序員能夠直接訪問處理器寄存器和系統資源。此外,MASM可以與集成開發環境如Visual Studio進行集成,提高開發效率。
其次,NASM是一款跨平台的匯編語言編譯器,支持多種操作系統,如Windows、Linux和macOS。NASM的設計初衷是為了實現編譯器的跨平台和模塊化特性,它支持80x86和x86-64平台的匯編語言編譯,並可以生成可執行文件、目標文件和動態鏈接庫。
另外,TASM是Borland公司開發的一款匯編語言編譯器,被廣泛用於Turbo C和Quick Basic等編譯器中作為中間過渡編譯。TASM能夠獨立編譯純匯編或Win32Asm的代碼,具有編譯快速、高效的特點。然而,與MASM相比,TASM的升級頻率較低。
此外,FASM是一款極小體積的匯編語言編譯器,支持多種操作系統和處理器架構。FASM可以生成可執行文件、目標文件和動態鏈接庫,並且具有快速的編譯速度。
最後,GAS是由GNU計劃所使用的匯編器,它是一款自由軟體,可以用於多種處理器架構的匯編語言編譯。
總的來說,這些匯編語言編譯器各有特點,適用於不同的編程需求和操作系統環境。程序員可以根據自己的需求選擇適合的編譯器進行匯編語言程序的開發。