请问下面嵌入汇编的函数返回值,是EAX吗?function Start:DWORD;stdcall;
asm
CALL @@1
@@1:
POP EAX
SUB EAX, 5
end;//转为C嵌入汇编如下,对不对?
DWORD __stdcall Start()
{
DWORD rs;
asm{
CALL @@1
@@1:
POP EAX
SUB EAX, 5
MOV rs, EAX
} return rs;
}
解决方案 »
- E2010 Incompatible types错误
- delphi的treeview如何才能禁止点击+号展开‘某个’节点
- 如何可以提高将listbox里所有的记录一次性的插入到表的速度
- 为什么adotable1.deleterecords()运行时出错。
- 怎么做类似outlook的面板(在左侧,象导航栏,在上面新建快捷方式)!!!!!
- BDE和ADO的区别
- 请教SHOWMODAL函数的用法
- 请问带自己的作品出去找工作是否要把自己的源码也带出去
- 用ADO方法操作数据库,很急!!!!
- Seek函数怎么用?
- 求ActiveX,供javaScript调用? 这个,怎么做啊?
- MYSQL连接[密码安全性问题]
2.功能来说是一样的,不过好象vc没有这种标号写法...记不清了,如果能编译,算我没说.
{
// DWORD rs;
asm{
CALL @@1
@@1:
POP EAX
SUB EAX, 5
// MOV rs, EAX
}// return rs;
}
这样的问题试一下就知道了,,,procedure TForm1.Button1Click(Sender: TObject);
var
i,j:dword;
begin
i:=0;
i:=Start;
j:=i+7;
showmessage(inttostr(j));
end;在i:=start前面加一个断点,的CPUview中看到的是lea ebx,[eax+$07]说明Start返回值在EAX中
Syant J. Wang
多谢各位, 本人Pascal比较菜,见到有函数好像不返回,就有些疑惑,呵呵!
另外,C++就不支持@@标志。好像也不支持标记在使用之后声明的写法。
to pig4210: 在Cbuilder下是可以的。 http://topic.csdn.net/u/20071123/12/ddefb0fa-ffc7-40da-a73c-7b4443b6debc.html