社区
汇编语言
帖子详情
int a;或int a[2]={1,2};对应的汇编指令是什么?
Roy_Smiling
2011-02-28 11:19:49
如题,编译之后的exe文件中变量的数据是怎么存放的。是不是和代码放一块的?我是问没有运行前的exe文件,这个文件是不是每一句都对应指令,然后在执行时在内存中分配数据?执行完了数据又回收。
...全文
323
6
打赏
收藏
int a;或int a[2]={1,2};对应的汇编指令是什么?
如题,编译之后的exe文件中变量的数据是怎么存放的。是不是和代码放一块的?我是问没有运行前的exe文件,这个文件是不是每一句都对应指令,然后在执行时在内存中分配数据?执行完了数据又回收。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zara
2011-02-28
打赏
举报
回复
[Quote=引用 2 楼 roy_smiling 的回复:]问一下一楼:int a;语句不形成任何指令,只对分配空间大小的那个指令有影响。这句话什么意思,是不是说这句话有一条分配空间的指令?另外假如在函数里定义的,数组是不是也在堆栈中分配内存的啊?[/Quote]
对局部变量在堆栈里分配空间,一般是通过 sub esp, xx 来实现的。这个指令是在函数的开始部分,对所需要空间统一进行的。所以,增加个局部变量,xx 也会跟着变,但不会再多出来个 sub esp... 的指令。
函数里定义的,无论是简单变量,还是数字或结构,只要不是被 static 修饰的,都是临时在堆栈里分配空间的;所以,函数一结束,这些变量就没有意义了。
va_zaixuexi
2011-02-28
打赏
举报
回复
[Quote=引用 2 楼 roy_smiling 的回复:]
问一下一楼:int a;语句不形成任何指令,只对分配空间大小的那个指令有影响。这句话什么意思,是不是说这句话有一条分配空间的指令?另外假如在函数里定义的,数组是不是也在堆栈中分配内存的啊?
[/Quote]
1. 声明一堆数组,反汇编直接看esp,理解几个esp,ebp的例子就明白了
2. 错.static int a[10];
Roy_Smiling
2011-02-28
打赏
举报
回复
问一下一楼:int a;语句不形成任何指令,只对分配空间大小的那个指令有影响。这句话什么意思,是不是说这句话有一条分配空间的指令?另外假如在函数里定义的,数组是不是也在堆栈中分配内存的啊?
zara
2011-02-28
打赏
举报
回复
看在哪里定义的吧。如果是函数之外,即所谓的静态变量,那么 a 一般是在 .data? 类段中分配个空间;a[2] 这样的预置数据的,则是在 .data 类的段里。如果是在函数里定义的,即所谓的临时/动态变量,在是在当前堆栈里分配的;int a; 语句不形成任何指令,只对分配空间的大小的那个指令有影响;int a[2]={1,2}; 处理和 int a; 一样的影响之外,还会形成两个赋值的指令,大致如 mov dword ptr [ebp-xx], 1 和 mov dword ptr [ebp-yy], 2
zara
2011-02-28
打赏
举报
回复
都是虚的吧,普通程序不涉及到物理地址的。
Roy_Smiling
2011-02-28
打赏
举报
回复
[Quote=引用 1 楼 zara 的回复:]
看在哪里定义的吧。如果是函数之外,即所谓的静态变量,那么 a 一般是在 .data? 类段中分配个空间;a[2] 这样的预置数据的,则是在 .data 类的段里。如果是在函数里定义的,即所谓的临时/动态变量,在是在当前堆栈里分配的;int a; 语句不形成任何指令,只对分配空间的大小的那个指令有影响;int a[2]={1,2}; 处理和 int a; 一样的影响之外,还会形成两个赋值的指令,大致……
[/Quote]
程序运行是分配的变量地址是物理地址还是虚拟地址?
String转
int
本套视频详细讲解了String如何转换成
int
,这在开发实践中会频繁遇到。
int
类型需要从文本框录入,如学生身高,服务器接收到的是String类型,使用时需要转换成
int
类型。类型转换时需要使用到包装类的方法,8种基本类型都有
对应
的包装类。
汇编语言-
int
指令
int
指令
int
指令的格式为:
int
n,n为中断类型码,它的功能是引发终端过程。 CPU执行
int
n指令,相当于引发一个n号中断的中断过程,执行过程如下。 取中断类型码n; 标志寄存器入栈,IF=0,TF=0; CS,IP入栈; (IP)=(N4),(CS)=(N4+2) 从此转去执行n号中断的中断处理程序。
int
指令的最终功能和call指令相似,都是调用一段程序。 ...
《汇编语言》学习(十三)
int
指令
int
指令是X86汇编语言中最重要的指令之一。它的作用是引发中断,调用“中断例程”(
int
errupt routine)。本文将介绍
int
指令的基本原理和应用,以及BIOS和DOS系统的中断例程。 一、
int
指令的原理 1,指令原型
int
n 注: 1)n 表示中断号,也可以称为中断类型码。n是一个字节大小的正整数,范围为“0 - 255”。 2)执行“
int
n”时
汇编中的
int
指令和端口
1.写在前面 前面我介绍了内中断的一些知识,通过修改中断程序和中断向量表,来达到修改0号中断程序,使得除法溢出的时候,屏幕上打印overflow!今天我们来讲下
int
指令和端口。 2.本篇博客的概述 3.
int
指令 3.1
int
指令
int
指令的格式为:
int
n, n为中断类型码,它的功能就是引发中断过程。 CPU执行
int
n指令,相当于引发一个n号中断的中断过程,执行过程如下: 取中断类型码n 标志寄存器入栈,IF=0,TF=0; CS、IP入栈 (IP)=(n4),CS=(n4+2) 从此处转
int
a=1 是原子操作吗?
【原子操作定义】 所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。也可以这样理解:如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构,那么这个操作是一个原子(atomic)操作。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部...
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章