最近学习汇编语言,结合之前学习的C#,有一些疑惑,还请各位前辈解惑!

m0_37605715 2017-08-14 05:19:11

int i1 = 1;
00000062 mov dword ptr [ebp-3Ch],1
int i2 = i1;
00000069 mov eax,dword ptr [ebp-3Ch]
0000006c mov dword ptr [ebp-40h],eax
C#中说整型是值类型,上面这个很好理解,就是将1存入到 [ebp-3Ch]这块内存空间,再将 [ebp-3Ch]这块内存空间的值赋给 [ebp-40h]这块内存空间。

string s1 = "Hello";
0000006f mov eax,dword ptr ds:[03372088h]
00000075 mov dword ptr [ebp-48h],eax
s2=s1;
00000078 mov eax,dword ptr [ebp-48h]
0000007b mov dword ptr [ebp-44h],eax
C#里面说字符串是引用类型,那么[ebp-48h]这块内存空间存的到底是[03372088h]这个地址呢,还是[03372088h] 这块地址中的字符串“Hello”???
...全文
585 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
不懂啊不懂 2017-08-23
  • 打赏
  • 举报
回复
你这个汇编感觉乖乖的,这个是编译器生成的吗?没有lea哪来的地址,s2是什么,没报错吗?
m0_37605715 2017-08-23
  • 打赏
  • 举报
回复
引用 3 楼 zara的回复:
怎么查看,调试软件都有内存数据显示子窗的吧,那里输入这些一般都可以的;有些调试软件如 windbg 有命令行子窗,那里也可以直接 dd 3372088 l 1 这样的命令来查看相应内存处的内容。
引用变量,就是以指针形式来表示对方,在 32位环境下就是 4 个字节了。
还有个问题想请教下你,string [ ]A=new string[3];A是数组这块内存空间的别名,还是另一块内存空间的别名里面存的是数组的首地址?
m0_37605715 2017-08-23
  • 打赏
  • 举报
回复
引用 5 楼 不懂啊不懂的回复:
你这个汇编感觉乖乖的,这个是编译器生成的吗?没有lea哪来的地址,s2是什么,没报错吗?
这是C#反汇编得到的
zara 2017-08-23
  • 打赏
  • 举报
回复
#4:
A 本身作为个变量,是要占用个空间的,局部变量一般就是如 [ebp-??] 这样的,其中存放的是新分配出来的内存空间的地址。

#5:
只有编译时不确定的才需要 lea 来获得地址吧,常量型字符串存放位置是确定了的(程序重定位除外),不需要 lea 的。如果需要个局部变量的地址,就需要 lea 了,否则操作上会更麻烦;直接使用局部变量本身,也是不需要的。
zara 2017-08-15
  • 打赏
  • 举报
回复
怎么查看,调试软件都有内存数据显示子窗的吧,那里输入这些一般都可以的;有些调试软件如 windbg 有命令行子窗,那里也可以直接 dd 3372088 l 1 这样的命令来查看相应内存处的内容。
引用变量,就是以指针形式来表示对方,在 32位环境下就是 4 个字节了。
m0_37605715 2017-08-14
  • 打赏
  • 举报
回复
引用 1 楼 zara 的回复:
[03372088h] 那里存放的是 "hello" 字符串的地址,不是字符串本身;然后,[ebp-48h] 处也是那个地址了,与 [033...] 那里是一样的。其实,调试软件载入单步运行那些指令,查看下相应内存的内容就明白了。
你这么说好像有道理,那么请问怎么查看[03372088h]、[ebp-48h]、[ebp-44h]这三个地方存储的地址值,以及怎么查看这个地址值里面存的“Hello”字符串?还有一个问题,引用变量是否像C语言里面的指针变量一样都是四个字节?谢谢老铁了!
zara 2017-08-14
  • 打赏
  • 举报
回复
[03372088h] 那里存放的是 "hello" 字符串的地址,不是字符串本身;然后,[ebp-48h] 处也是那个地址了,与 [033...] 那里是一样的。其实,调试软件载入单步运行那些指令,查看下相应内存的内容就明白了。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧