在VS2015中编写x86汇编
?參考教程:
作者:上下求索
VS2015,C嵌套匯編 & C,匯編相互調(diào)用
http://ylqhust.github.io/blog/2016/04/17/vs-clanguage-asm-combine/
?
最近因?yàn)楣ぷ餍枰_始學(xué)習(xí)x86匯編,目的是使用c++調(diào)用匯編編寫的代碼,在網(wǎng)上找到的資料要么不對,要么是純匯編編寫的程序。這里分享一個很不錯的在VS2015中調(diào)用x86匯編的地址,方便學(xué)習(xí)使用。?
在實(shí)際實(shí)踐中,發(fā)現(xiàn)該教程的有些地方并不能正常運(yùn)行,需要根據(jù)實(shí)際情況稍微變動。
1、在新建控制臺空項(xiàng)目后,添加.asm文件,并完善匯編,教程中提到是需要在命令行中先使用 ml /c /coff sum.asm 指令生成對應(yīng)的匯編obj文件,然后把該文件添加到項(xiàng)目中,我出現(xiàn)的情況是,如果把obj文件加入到項(xiàng)目中,在編譯階段會報如下錯誤:
sum.obj : error LNK2005: _sumab already defined in sum.obj
出現(xiàn)這種情況的原因就在于項(xiàng)目中同時存在sum.asm和sum.obj,意思就是說編譯器會自動編譯匯編源代碼,無需手動編譯,所以上面那一步操作實(shí)際可以略去。
2、第二個問題是在匯編子程序中調(diào)用c代碼。
教程給出的c代碼如下:
extern int __stdcall sum3(int a, int b) {//此函數(shù)給匯編子程序調(diào)用return a + b; }同樣在編譯階段會出現(xiàn)如下錯誤信息:
asmfile.obj : error LNK2019: unresolved external symbol _sum3@8 referenced in function _sum需要對c代碼做如下修改
?
extern "C" { int __stdcall sum3(int a, int b) {//此函數(shù)給匯編子程序調(diào)用return a + b; } }這樣,便可以順利通過編譯,進(jìn)而運(yùn)行項(xiàng)目文件。
轉(zhuǎn)載于:https://www.cnblogs.com/buaawang/p/9824900.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的在VS2015中编写x86汇编的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 在CentOS7上部署.net core
- 下一篇: Lesson 016 —— python
