`

一道类型转化题的汇编分析

    博客分类:
  • C
阅读更多
原题是:
下面的程序的结果是多少?(中国著名通信企业S公司07年8月的面试题)
#include <stdio.h>

int main()
{
	unsigned int a = 0xFFFFFFF7;
	unsigned char i = (unsigned char)a;
	char* b = (char*)&a;

	printf("%08x, %08x", i, *b);
	return 0;
}

输出结果是:000000f7,fffffff7.

我们用VC6.0调试得到这段程序的反汇编代码,代码如下:
5:        unsigned int a = 0xFFFFFFF7;
00401028   mov         dword ptr [ebp-4],0FFFFFFF7h
6:        unsigned char i = (unsigned char)a;
0040102F   mov         al,byte ptr [ebp-4]
00401032   mov         byte ptr [ebp-8],al
7:        char* b = (char*)&a;
00401035   lea         ecx,[ebp-4]
00401038   mov         dword ptr [ebp-0Ch],ecx


通过这段汇编代码,我们容易看到:
[1] 对于unsigned char i = (unsigned char)a;这条语句的执行过程可以看出,有个数据截断的过程,将a的低八位赋值为i。
[2] 对于char* b = (char*)&a;语句,首先将a的地址存储到一个寄存器中,然后直接赋给了b。所以b指向的地址也是a的内存地址。后面的*b当然就指向了这块内存的内容了,即fffffff7.
分享到:
评论

相关推荐

    数据结构课考研题汇编

    ### 数据结构考研题知识点分析 #### 一、选择题 1. **算法的计算量**:题目中的“算法的计算量”实际上指的是算法的**时间复杂度**,即算法执行所需时间与输入数据规模的关系。选项中的“复杂性”更准确地描述了这...

    安徽省宿州市砀山县事业编考试试题汇编【2008年-2018年带部分答案】(一).docx

    第十三题是一道比例计算题,需要根据男女员工比例变化和总人数变化来求解今年男员工的人数。 【知识点十四:社会现象定义】 第十四题定义了“漂二代”的概念,指的是随父母迁移并在外生活的人,案例C符合这一定义。...

    广东省各市2015年高考数学一模试题分类汇编 复数与算法初步 理

    4. 第5题涉及二进制和十进制之间的转换,这是计算机科学基础中的基本操作。 这些题目综合测试了考生对复数运算的理解和对算法逻辑的掌握。在复习这些内容时,学生应熟练掌握复数的基本运算,理解复数在复平面上的...

    大学计算机基础教程习题答案.pdf

    学生应该仔细分析每一道题的解题思路,确保自己完全理解每一个概念,并能够灵活应用到实际问题中。同时,通过反复练习和理解,可以提高解决计算机相关问题的能力,为未来的学习打下坚实的基础。

    重大考研专业课历年真题——微机原理

    1. 首先,仔细阅读并理解每一道真题,分析其考察的知识点。 2. 接着,根据题目要求,尝试解答,遇到困难时查阅相关资料。 3. 完成解答后,对照答案检查,分析错误原因,深化理解。 4. 定期回顾,巩固记忆,尤其是...

    计算机组成原理试题 很不错

    【计算机组成原理试题详解】 计算机组成原理是计算机科学与技术领域的基础...在复习过程中,不仅要看答案(02da和03da),更应深入思考每一道题背后的原理,将理论知识与实践应用相结合,从而在考试中取得理想的成绩。

    2013数学建模 竞赛试题汇总

    数学建模的核心是将复杂的问题转化为数学模型,通过数学分析、计算和模拟来求解。2013年的竞赛试题可能涵盖了多个领域,如经济、环境、工程、社会学等,每道题目都要求参赛者运用不同的数学方法进行处理,如微积分、...

    IT类专业最全的面试笔试题集合

    南京摩托罗拉公司的笔试题主要针对应聘软件开发岗位的候选人,内容涵盖C语言编程、Java编程、无线网络基础知识及一道智力题。下面将详细解析部分试题。 ##### 1. 选择题 **1.1 无线通信基于哪种协议(802.11)** ...

    微机原理习题集及答案

    《微机原理习题集及答案》是一份针对微机原理学习的重要参考资料,它包含了大量练习题和对应的解答,旨在帮助学生深入理解和掌握微机原理的基础知识和应用技巧。这份资料采用WORD文档格式,便于阅读和打印,为自主...

    【5年高考3年模拟】2014高考数学二轮复习 2013高考分类汇编 函数的图象.doc

    2. 函数 $f(x) = \ln(x^2 + 1)$ 的图象:这是一道考察对数函数的题目,2013年福建卷的第5题。由于 $x^2 + 1$ 对所有实数$x$都是正的,因此该函数在整个实数域内都有定义,且随着$x$的增大,其增长趋近于直线。因此,...

    清华版编译原理课后答案

    编译原理是计算机科学中的一个重要领域,主要研究如何将高级编程语言转换为机器可以理解的低级语言,如汇编代码或机器代码。这门学科对于计算机科学专业的学生和软件开发者来说至关重要,因为它揭示了程序如何被...

    蓝桥杯单片机组省赛程序题题目大全(第四届到第十三届)

    每一道题目都是一个学习和提高的机会,建议逐一分析,深入理解其背后的原理,然后动手实践,以达到巩固和扩展技能的目的。在解题过程中,遇到困难不要气馁,多查阅资料、讨论交流,这将有助于你在单片机的学习道路上...

    第八题解题思路——迷雾中的琴声1

    2. 十六进制与二进制转换:理解如何在不同进制之间转换数据。 3. 位操作:熟练运用异或、位移等位操作进行数据处理。 4. 多线程编程:理解线程同步机制,如线程标识符和同步原语。 5. 密码学基础:熟悉异或密码、...

    2021-2022计算机二级等级考试试题及答案No.3285.docx

    **汇编语言**:虽然接近机器语言,但还需要经过汇编器转换成机器语言才能被执行。 - B. **机器语言**:可以直接被计算机硬件识别。 - C. **高级程序语言**:如Java、Python等,需要经过编译或解释才能运行。 - D...

    DDCTF2018出题心得

    还有题目"被隐藏的真实",该题涉及到了底层汇编语言的逆向和反混淆技巧。选手们需要手动分析汇编代码,处理IDA等工具的混淆输出,以及理解C++符号修饰等底层技术。这道题目考察了选手对于程序逆向和底层分析的能力,...

    嵌入式C精华.pdf

    - **void指针**:`void*`指针可以指向任何类型的对象,但要访问该对象时必须显式转换为正确的类型。 - **应用场景**:`void*`指针在泛型编程中十分有用,尤其是在实现多态性或通用函数时。 #### C/C++语言可变参数...

Global site tag (gtag.js) - Google Analytics