用VC写Assembly代码(5) --一些宏的使用(二)

原创 2006年06月13日 13:27:00

目前我知道vc++ inline assembler 有这几个宏 LENGTH、SIZE、TYPE,他们使用简单,下面个个例子:

void main()
{
 int k[10];
 int a,b,c;
 __asm
 {
  mov eax, LENGTH k
  mov ebx, SIZE k
  mov ecx, TYPE k
  mov a, eax
  mov b, ebx
  mov c, ecx
 }
 printf("%b - %d - %d/n", a, b, c);

}

他们的反汇编代码如下:

53:       int k[10];
54:       int a,b,c;
55:       __asm
56:       {
57:           mov eax, LENGTH k
0040B7E8   mov         eax,0Ah
58:           mov ebx, SIZE k
0040B7ED   mov         ebx,28h
59:           mov ecx, TYPE k
0040B7F2   mov         ecx,4
60:           mov a, eax
0040B7F7   mov         dword ptr [ebp-2Ch],eax
61:           mov b, ebx
0040B7FA   mov         dword ptr [ebp-30h],ebx
62:           mov c, ecx
0040B7FD   mov         dword ptr [ebp-34h],ecx
63:       }
64:       printf("%b - %d - %d/n", a, b, c);
0040B800   mov         eax,dword ptr [ebp-34h]
0040B803   push        eax
0040B804   mov         ecx,dword ptr [ebp-30h]
0040B807   push        ecx
0040B808   mov         edx,dword ptr [ebp-2Ch]
0040B80B   push        edx
0040B80C   push        offset string "%b - %d - %d/n" (00420f98)
0040B811   call        printf (004010a0)

相关文章推荐

An error occurred during the installation of assembly 'Microsoft.VC90.CRT,version = "9.0.21022.8"

问题描述windows安装python2.7的时候出现An error occurred during the installation of assembly ‘Microsoft.VC90.CRT...

Inline Assembly in GCC Vs VC++.

  • 2012年11月15日 22:24
  • 182KB
  • 下载

如何通过ildasm/ilasm修改assembly的IL代码

这段时间为跟踪一个Bug而焦头烂额,最后发现是Framework的问题,这让人多少有些绝望。所以到微软论坛提了个帖子,希望能得到些帮助。虽然论坛智能到能够判断楼主是否是MSDN订阅用户,以便尽快解决(...

详解 “预处理、编译(compile)、 代码优化、 汇编(Assembly)、 链接 (link)”的具体过程

我们在用vc写好代码后,在进行编译和连接的时候,经常会遇到各种问题: 如在连接时遇到的问题:(1)error LNK2019: 无法解析的外部符号*** ,该符号在函数***中被引用    (2)er...

Assembly Language for x86 Processors 5e

  • 2012年11月06日 23:31
  • 471KB
  • 下载

CATIA_V5_Assembly培训教材.ppt

  • 2014年06月30日 13:51
  • 2.06MB
  • 下载

看opengl写代码(5) 使用顶点数组

使用顶点数组 可以 减少 opengl函数的 调用次数   以及共享 顶点,提高 效率。 总共 有 8组 数组,他们 是 顶点,颜色,辅助颜色,索引,法线,雾坐标,纹理坐标,边界标记。关于 每个数组的...

使用babel将es6代码转成es5(二)

babel、node、es6

使用APICloud编写优雅的HTML5代码《二》:ajax、文件上传

摘要: 对于ajax这个API而言,它实际上是有非常多的参数可供开发者选择的,以此满足各种特殊的需求,包括:url、method、cache、timeout、dataType、charset、head...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用VC写Assembly代码(5) --一些宏的使用(二)
举报原因:
原因补充:

(最多只允许输入30个字)