用汇编的眼光看C++(之嵌入汇编)

发表于:2012-5-24 09:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:feixiaoxing    来源:51Testing软件测试网采编

  嵌入式汇编是对纯汇编文件的一种有益补充。通常会有下面几种情况使用到汇编:(1)提高代码的工作效率 ,使用到cpu的一些特殊指令,比如说mmx指令;(2)对硬件进行某种特殊的操作,比如说关中断等,这在内核级的代码中是比较常见的。但是我们讲究嵌入式汇编的一些基本点和大家一起讨论一下,建议大家和我一起做实验,用事实证明一切。

  (1)使用嵌入汇编的时候,注意寄存器的保护

int process()
{
 __asm
 {
  push ax
  push bx
  push cx
  pop cx
  pop bx
  pop ax
 }
 return 1;
}

  (2)调用函数的时候,直接使用call即可,返回值用eax传递,同时注意堆栈平衡

int add(int a, int b)
{
 return a + b;
}

int process()
{
 int value = 0;
 __asm
 {
  push eax
  push 2
  push 3
  call add
  add esp, 8
  mov value, eax
  pop eax
 }
 return 1;
}

  (3)计算的时候注意指针和数值的差别

void process()
{
 int value = 0;
 int* address = &value;
 __asm
 {
  push ebx
  mov value, 1
  mov ebx, address
  mov [ebx], 2
  pop ebx
 }
 
 assert(value == 2);
 return ;
}

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号