汇编网首页登录博客注册
hexijiehaha的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2010-04-21 15:07] signed 与 signed 之2

// second.
/*////////////////////////////////////
/        unsigned i; //改为signed i   /
/        for(i = 9 ; i >= 0 ; i--){  /
/                printf("%u\n",i);   /
/        }                           /
///////////////////////////////////*/
//diffrent between jb&jl

这个程序就能看出明显的区别,jb,与jl
而之前的那篇中就看不出区别了 - -!...
阅读全文 | 评论次数(0) | 浏览次数(274) | 所属类型(默认类型)

[2010-04-21 14:41] signed 与 unsigned

代码如下:

     void main(){
        int i = -20;
        unsigned int j = 10;
        cout<<i+j<<endl;
    }

程序输出的结果是10进制的,FF FF FF F6H。程序执行到i + j,并
mov eax,i+j; //具体什么忘记了用i + j代替下
的时候,eax结果是FF FF FF F6与把unsigned去掉的结果是一样的。push eax,之后就call去了。那么如果堆栈里面的数据是一样的,cout如何去判定是signed 还是unsigned。是不是编译的时...
阅读全文 | 评论次数(0) | 浏览次数(240) | 所属类型(默认类型)

[2010-04-21 14:32] 关于一个小问题的思考

原题:
void f(){
};
void main(){

    int x = 1;
    f();
    x = 0;
    cout<<x<<endl;
}

在f()里面添加代码,使程序输出1。

解:
    f(){
        char buffer[4];
        int* ret;
        ret = ((int*) buffer) + 2;
        (*ret) += 7;
    }

//思考如下:
    buffer转为int指针后+2就是+sizeof(int),那么就是加了8个字节,而buffer后面是ebp,ret。所以...
阅读全文 | 评论次数(2) | 浏览次数(289) | 所属类型(默认类型)
页码数(1):  1