我有一個任務,涉及寫一個.S文件,並建立一個可執行文件,它返回0.我查了一下,它說它是彙編源代碼,但是當我寫它像彙編它沒有編譯。有人可以給我一個.S文件的例子或者一個關於它們的教程,它能指引我朝着正確的方向嗎?另外我必須創建一個makefile來創建可執行文件。如何編寫.S文件並將其製作爲可執行文件?
0
A
回答
0
你沒有指定一個指令集,所以希望我選擇了一個足夠模糊不能爲你做功課的人。
你會想知道調用約定或在這種情況下返回約定。一些體系結構的編譯器使用寄存器來返回一些使用堆棧的東西。
int zero (void)
{
return(0);
}
我會編這樣一個GCC PDP11交叉編譯器
pdp11-bsd2.11-gcc -O2 -c zero.c -o zero.o
pdp11-bsd2.11-objdump -D zero.o
,並得到
00000000 <_zero>:
0: 1166 mov r5, -(sp)
2: 1185 mov sp, r5
4: 0a00 clr r0
6: 1585 mov (sp)+, r5
8: 0087 rts pc
所以看起來這個架構的返回值是R0。因此,我們可以縮短我們已經短節目是
.global _main
_main:
clr r0
rts pc
不幸的是我的PDP11交叉編譯器並不一定是建立在特定的操作系統之上做了一個交叉編譯器。
pdp11-bsd2.11-as zero.s -o zero.o
pdp11-bsd2.11-gcc zero.o -o zero
/opt/gnupdp11/lib/gcc/pdp11-bsd2.11/4.7.3/../../../../pdp11-bsd2.11/bin/ld: cannot find crt0.o: No such file or directory
/opt/gnupdp11/lib/gcc/pdp11-bsd2.11/4.7.3/../../../../pdp11-bsd2.11/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
這並不重要,因爲我沒有一個操作系統的pdp11來運行它。但是,在我可以運行的另一個平臺上執行相同類型的工作就可以了。
在make makefile之前,您需要知道要執行任務的命令行命令。也許可以創建一個腳本/批處理文件來執行完整和正確的命令,以便從頭到尾獲得完整的命令,然後可以像添加一行額外的文本和縮進一樣簡單,並且您有Makefile。請不要在這裏問這個問題,這裏已經有太多的信息了,在網上你應該沒有問題找到一個非常簡單的例子作爲參考。
相關問題
- 1. 如何編寫clisp可執行文件?
- 2. 如何將C文件編譯爲可執行文件(.exe)?
- 3. 製作可執行文件
- 4. 如何將IR保存到文件並將其構建到可執行文件?
- 5. 如何爲Windows可執行文件製作Python腳本插件?
- 6. 如何爲父JavaScript文件編寫可執行的jQuery?
- 7. 如何讓Ruby文件作爲可執行文件運行?
- 8. 如何將可執行文件轉換爲文本文件。
- 9. 將Unix可執行文件轉換爲Windows可執行文件
- 10. 如何製作.bundle文件可執行文件?
- 11. 如何將動態可執行文件轉換爲靜態可執行文件?
- 12. 爲OS X製作可執行的可執行文件
- 13. 將靜態文件編譯爲可執行文件
- 14. 下載兩個文件並將其製作爲zip文件
- 15. 可以直接執行.s文件嗎?
- 16. 如何將可執行文件作爲系統服務運行?
- 17. 將.m文件轉換爲二進制可執行文件
- 18. 如何將我的Java程序作爲可執行文件運行.jar文件?
- 19. 如何將Arduino文件轉換爲可執行文件.exe
- 20. 如何將python文件轉換爲可執行文件?
- 21. 如何在可執行文件完成時將可執行文件的輸出寫入文件?
- 22. 如何將python編譯爲可執行文件?
- 23. 如何將.py編譯爲Debian的可執行文件
- 24. 如何將代碼準備好製作成可執行文件?
- 25. 如何編譯成可執行文件
- 26. 如何爲xna上的網站製作可執行文件
- 27. 如何在libgdx中爲mac和ubuntu製作可執行文件
- 28. 如何爲python項目製作可執行文件
- 29. 如何編寫批處理文件來執行TCL文件
- 30. 如何編寫bat文件以執行.sql文件
PDP-11 - 下沉的車道... ;-) – turboscrew