目录
1.在IA32中一共有多少种办法从用户态跳到内核态?
1)IA-32解释:
通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等IA-32(Intel Architecture,英特尔体系架构)[1] ,属于X86体系结构的32位版本,即具有32位内存地址和32位数据操作数的处理器体系结构,从1985年面世的80386直到Pentium 4,都是使用IA-32体系结构的处理器。
2)方法
通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等
2.用宏定义写出swap(x,y)--交换x和y的值
1)加减运算实现。(注意宏定义中的写法)
#define swap(x, y)x = x + y;y = x - y;x = x - y;
//把第一步左边x带入 y=x+y-y=x
//把上式y带入,x=x-(x-y)=y
//完成交换
截图:
2)用位运算符^
//异或^
void swap(int x,int y)
{
x=x^y;
y=x^y;
x=x^y;
}
3)用temp保存其中一个值
void swap(int x,int y)
{
int temp=x;//保存x的值
x=y;//交换y的值给x
y=temp;//把原有x的值给y
}