Visual Studio 2008 下生成C/C++ 汇编代码
在项目属性页 --> 配置属性 --> C/C++ --> 输出文件里面,将汇编输出的下拉列表从无列表选择为你需要汇编输出的内容,比如“仅列出程序集(/FA)”,如图1-1,图1-2:
图1-1
图1-2
---------------------------------------------------------------------------------------------------------
图1-3是未修改之前Debug目录下的文件:
图1-3
图1-4是修改之后Debug目录下的文件,注意多了两个汇编文件
图1-4
图1-5是汇编文件HelloWorld.asm的具体内容
图1-5
这样,当你搞不懂编译器到底做了些什么,或者某块内存中到底是什么东西,你可以来查看汇编代码。
比如int i = 5;
int a = (++ i) + (++ i) + (++ i) ;
a是等于22还是24,看你编译器了。o(∩_∩)o...
另外,解决运行时窗口一闪而过的办法是:按Ctrl+F5。
或许这些都是很菜的问题,或许是我平时对VS接触的不多,不过遇到问题解决问题,心情大好。
相关文档:
N 当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零.
Z Z=1表示运算的结果为零,Z=0表示运算的结果非零。
C 可以有4种方法设置C的值:
加法运算(包括CMN):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。
减法运 ......
1、为了调用宏时能得到正确结果,在宏体中建议对宏的每个参数用括号括起来,并且当宏体是一个表达式时整个宏体也用括号括起来。
/* c1.c:将两个数相乘 */
#define product(x,y) ((x)*(y))
#include <stdio.h>
int main(){
int a=1,b=2,c=3,d=4,x=0;
x=product(a+3,b)+product(c,d); / ......
/* =========================================================================== */
/* Project: s3c44b0_lib & ......
本文包括大部分C标准库函数,但没有列出一些用途有限的函数以及某些可以简单的从其他函数合成的函数,也没有包含多字节和本地化函数。
标准库中的各个函数、类型以及宏分别在以下标准头文件中说明:
<assert.h> <float.h> <math.h> <stdarg.h> <stdlib.h>
<ctype.h> <limits.h& ......
以前学生时代的时候就有遇到过这个问题,不过没去深究;
现在也是老问题,其实很简单,就是为了防止#include两个头文件的时候,把第一个头文件的最后一行和 第二个头文件的第一行拼接成一行;呵呵,其实很多问题都很简单,而且很隐蔽,只是我们很多时候没去注意! ......