// second.
/*////////////////////////////////////
/ unsigned i; //改为signed i /
/ for(i = 9 ; i >= 0 ; i--){ /
/ printf("%u\n",i); /
/ } /
///////////////////////////////////*/
//diffrent between jb&jl
这个程序就能看出明显的区别,jb,与jl
而之前的那篇中就看不出区别了 - -!...
- [mess] 正确。 05/11 15:10
- [mywiil] 其实就是相当于修改ip。汇编中的call指令+局部变量和参数都是用栈来存放这些知识要有就好理解了。 04/25 21:17
- [mywiil] 此等问题的研究非反汇编不行。 04/25 21:12
- [mouse] (3)2^12,1024; --- 第一个空是1024*8=2^10*8=2^13 第四 04/24 23:00
- [jisuanji] 13题是不是 add al,al啊? 如果是答案好像是 0D810H 吧 04/20 22:04
[2010-04-21 15:07] signed 与 signed 之2
阅读全文 |
评论次数(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。是不是编译的时...
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。所以...
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