⑴ 匯編語言編譯器怎麼使用
這個問題很不好跟你解釋
能夠在屏幕上顯示結果並不是編譯器做的事
而是你程序代碼與你自己來做的事
編譯器只會把匯編指令翻譯成機器語言指令
去下載AndASM環境編譯器 有語法檢測功能,高亮顯示。以及環境搭建
多學指令的運用以及編程最新咨詢消息,去了解哪些要學哪些要學精
⑵ 匯編編譯器使用問題
首先,暫時無法確定MASM32的問題,按道理學應該可以安裝,除非是軟體兼容故障;
MASM611要在命令行下使用,運行ML,然後將.obj文件LINK成EXE;
最後,你抄的那段代碼有問題:
aume CS:abc
abc SEGMENT
MOV AX,2
ADD AX,AX
ADD AX,AX
END
⑶ 匯編編譯器 masm 32 的使用 具體點(主要編譯,鏈接等常用操作---ml ,link) 請附上一個例子和具體操作
先把BIN,LIB,INCLUDE幾個文件夾取出來,然後設置下環境
如建個BAT文件方便點,輸入
@echo off
set include=C:\TDDOWNLOAD\source\環境\INCLUDE
set lib=C:\TDDOWNLOAD\source\環境\LIB
set path=C:\TDDOWNLOAD\source\環境\BIN;%path%
echo on
編譯這些最好下個nmake.exe放到BIN文件夾,在編譯時,在命令行輸入要編譯程序的路徑
再輸入 nmake回車就完成兩步操作了。
ml命令一步步輸入的話就
; ml /c /coff XXX.asm
; rc XXX.rc (有資源文件的話)
; Link /subsystem:windows XXX.obj XXX.res (有資源文件才寫XXX.res)
注意前面的分號去掉
⑷ 匯編語言編譯器是怎麼編寫的
編譯器自舉!搜索這個關鍵字
程序都是編譯器編譯的。這個是肯定的
至於第一款X語言編譯器是不是直接1010101010自己寫的那就不知道啦
一般開發編譯器的話。有兩條路選擇
1.利用yacc(或者其變種)&lex(詞法分析)-等工具自己生成語法模板
詞法語法都可以使用這些工具自己生成
然後自己編寫生成的中間碼和生成的機器碼就可以了
一般做編譯原理類似試驗都是如此的。許多編譯器也的確是這樣
2.自己寫詞法分析和語法分析。可以參考一些開源的編譯器
lcc-這個是ANSI C99標準的編譯器是開源的
或者nasm,watcom等編譯器到www.sf.net上不少開源的編譯器
總的來說。高級語言編譯器比較難寫
如果想快速寫出一個的話
可以採用第一種做法。利用工具生成語法詞法模板
先寫一個簡單的匯編編譯器比較簡單
開源的有nasm,jwasm(支持masm語法開源的編譯器)
http://www.japheth.de/JWasm.html
fasm(這款編譯器是自舉的.就是自己可以編譯自己),
http://flatassembler.net/
剩下的就是自己做好語言規則關鍵字map
引用高手的話。語言map做好了你的編譯器也做好一半了
剩下的都是機械性的工作了。
生成x86或者arm指令。
優化工作這個很難解釋.根據你所需要的做吧
畢竟可以做出一個無錯,又XX的編譯器已經很難得
你可以選擇使用現有的編譯器開發自己的編譯器
然後等到你的編譯器支持相當數量指令和成熟度的時候
使用自己的語法重新寫一遍編譯器.
這樣你就可以用自己的編譯器開發自己的編譯器了(是不是很邪惡?)
另外舉幾個例子
Delphi的編譯器是C++ Builder開發的。
而C++ Builder的IDE是Delphi開發的
C++ Builder的編譯器是C++ Builder開發的-這個就是編譯器自舉了。。Delphi和C++ Builder共享一個後端化優化器。
Delphi 早期的版本的編譯器是tasm直接編譯的。可見Anders的匯編功力多強悍(Anders也就是後來VJ++,C#,.NET工程的核心架構師.最關鍵的靈魂級人物)
VC++的編譯器是VC++開發的。很明顯這都說明了編譯器自舉
自己開發自己。如果一個編譯器可以做到自己編譯自己。那基本上就可以實現任何功能了。
關於編譯器開發的書籍可以看一下
龍書《編譯原理(第二版)》
虎書《現代編譯原理-C語言描述》
鯨書《高級編譯器設計與實現》
建議從鯨書看起。然後是龍書
再來是虎書--虎書裡面描述了許多現代編譯器(正如其名)技術
例如面向對象啦,優化,垃圾回收等等.
鯨書看完基本上就可以實現一個簡單的Tiny C編譯器了
然後在龍書鞏固,讀一下語言規范,自己看一些開源的匯編編譯器代碼
自己就可以嘗試做一個匯編語言編譯器了.等到技術提高了
在嘗試做一些高級語法識別,參考LCC代碼做一下ANSI C99的
C語言編譯器。再來就看你自己的興趣和領悟度拉
如果想支持C++的話就得要對編譯器做許多方便的研究
類似Java那種跨平台或者Ruby,Python等動態語言
虎書中也有描述。當然看自己功力了
⑸ 匯編語言編譯器的TASM的用法
TASM是Borland公司推出的匯編編譯器,也是一種使用很廣泛的編譯器,和MASM相比,TASM的升級沒有這么頻繁。TASM早在1.0版本就有了對80386處理器指令的完全支持(MASM要到5.0版本才支持80386指令),1989年推出的1.01版本修正了1.0版的一些錯誤;早期的版本還有TASM 3.0和TASM 4.0,其中4.0版是TASM系列編譯器編寫DOS程序使用最廣泛的版本。
到目前為止,TASM的最後一個版本是5.0版,這個版本支持Win32編程,並單獨為Win32編程附帶有一整套的32位程序:32位的編譯器TASM32.EXE、鏈接器TLINK32.EXE和資源編譯器BRC32.EXE。與這些32位程序對應的16位工具在軟體包中依然存在,文件名為TASM.EXE,TLINK.EXE和BRC.EXE等。
TASM 5.0命令行的使用方法是:
TASM32 [選項] 源文件名[,[目標文件名],[列表文件名],[索引文件名]][;]
在Win32編程時TASM的常用選項如下表所示。
選 項
簡 介
/ml,/mx,/mu
對大小寫是否敏感:ml=全部敏感,mx=全局變數大小寫敏感,mu=不敏感,Win32編程中必須用ml選項
/m#
允許第#次編譯掃描時可以向前引用,一般使用/m2
/i路徑
設定include文字所在的路徑
/l,/la
lst文件的格式:/l為正常格式,/la為擴充格式
/zi,/zd,/zn
符號調試信息的控制:/zi為全部,/zd為僅有行號,/zn為不產生調試信息
TASM和MASM之間的導入庫和目標文件等不能通用,程序員無法用Microsoft的鏈接器來鏈接TASM產生的obj文件,反之亦然,這是因為TASM的庫文件和obj文件一直是OMF格式,與Microsoft使用的COFF格式不兼容
⑹ 匯編編譯器的工作和生成可執行文件的執行過程是怎樣的
首先,目測你把事情想復雜了。
偽指令就相當於關鍵字,在讀取源文件後就將所有語句拆分為許多個token,然後根據偽指令來處理這些token,比如是語法錯誤,token的類型(如參數,標志符等)。。。
可執行文件的載入另外找份說PE的書看就知道了,我自己也說不完。一個物理段最大是64kb,若可能會盡量連續第載入在一起,但內存中連續空間一般沒那麼大空間,就需要各種分配內存的手段來硬塞進去,包括分頁。
CPU不需要區分數據和代碼,只要執行到的位置一概視為代碼,若此位元組碼未定義指令,則產生#UD錯誤。區分數據和代碼是程序員的工作。
⑺ 請問ARM的匯編譯器和c編譯器個是什麼
匯編編譯是編譯匯編語言用的,c編譯器是編譯C語言用的。如果用的是iar他們都是集成在一起的一般看不出來。
如果用的gcc,可能會從編譯指令上看出點區別。現分別對不同文件進行編譯,編譯成。o文件,再進行文件連接。
⑻ 如何使用masm匯編譯器
你好,
運行里輸入:COMMAND
然後進入到你的MASM編譯器的目錄下
假設你有一個匯編源程序,也在當前目錄下,
然後輸入命令:
MASM 文件名;
LINK 文件名;
DEBUG 文件名.EXE;
o(∩_∩)o
⑼ 如何在debug中使用匯編編譯器
不可以.debug可以即時運行一些短小的匯編程序,但是它無法輸出保存,也不存在編譯功能.