作者wil771126 (雨的印记)
看板ASM
标题[问题] 用MASM存取高阶语言传进去的阵列
时间Sat Jun 19 22:27:34 2010
为了某些程式的需求
想要先写一些测式的做法 可是也失败了
我想用MASM写一段procedure 去存取由C++传进去的阵列
C++ part:
extern "C" int getFirst(int *arr)
void main()
{
int *a = new int[5]
for(int i=0;i<5;i++)
{
a[i] = i;
}
int b = getFirst(a);
cout << b;
}
MASM part:
.code
_getFirst proc near
push ebp
mov ebp, esp
mov eax, [ebp]
pop ebp
ret
_getFirst endp
我该怎样才可以用MASM 去做这个procedure呢
该从高阶改还是低阶改
还有 关於暂存器的用法 有什麽 使用原则(像EBP ESP等)
也跟大家请教一下 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.22.18.78
1F:→ wil771126:补充 [ebp] 後面加上 +8 +12 也不是我要的 06/19 22:31
※ 编辑: wil771126 来自: 163.22.18.78 (06/19 22:38)
2F:→ wil771126:我发现式用 [eax+8] 来取 规则是什麽@@ 06/20 02:17
3F:推 loveflames:[eax+8]?你是存取a[2]对吧 06/20 02:48
4F:推 loveflames:mov eax, [ebp]这行有点奇怪,你拿旧ebp的值要做什麽? 06/20 02:51
5F:→ wil771126:如果是传一个整数 要用esp (传给ebp) 当address去取得 06/20 22:21
6F:→ wil771126:eax+8 是a[0]没错 好像传进去都从+8开始的 06/20 22:21
7F:推 loveflames:那你得把环境叙述的更详细,最好还要截图 06/21 03:56
8F:推 loveflames:因为这不合一般的规则,a已经推进getFirst的堆叠里 06/21 03:57
9F:推 loveflames:就应该用getFirst的ebp来取 06/21 03:58