昨天想配置下以后写asm的环境。就想看看在vc里面怎么使用asm文件。本来我觉得是很简单的问题。汇编器生成obj文件。然后由linker来链接就ok了。当然这里面有个函数名字问题。这些我都知道的。比较郁闷的是我刚开始编译asm文件生成的obj文件居然不在debug目录下。老以为那个custom build step里面的output 应该就是我要求ml(masm+linker,不过我只需要它帮我生成obj文件就好了)帮我生成的目标文件。不过后来才知道这个选项只是告诉linker要去链接这个目标文件。在console下打ml /help 看到有个选项 -Fo, 指定生成目标文件的名字。
记一下这个设置。以后任何asm文件都可以同样设置一下就好了。
Command Line : ml /Zi /c /coff /Fo $(IntDir)/$(InputName).obj $(InputName).asm
/zi: Add Symbolic debug info
/c :Assemble without linking
/coff Generate coff format file
/Fo Name object file
Description: Compiling $(InputName).asm ...
OutPuts: $(IntDir)/$(InputName).obj
再记一个小技巧:
如何把一个数调到一个给定数字的整数倍,比如8的整数倍。给定10,那就应该返回16。给定7就应该返回8。有个比较快的方法。记在这里。万一以后用的上。
static const int ALIGN = 8;//any number u want
int RoudUp(const int a){
return (a + ALIGN -1) & (~(ALIGN-1));
}