Linux 停这段汇编 的几个疑问

Linux 下这段汇编 的几个疑问
push ebp
push ebx
push esi
push edi
xor edx,edx
xor esi,esi
xor ecx,ecx

mov ebx ...   //参数1
mov ecx ...   //参数
mov edx ...   //参数
mov esi ...   //参数
mov edi ...   //参数
mov ebp ...   //参数
mov eax ...   //系统调用号
syscall       //系统调用号

pop edi
pop esi
pop ebx
pop ebp
int3

我想问的是
1、第一段 和 第三段的作用 为什么只压4个寄存器?其他的呢? 如esp,eax
2、xor在这里的作用就是给寄存器赋值为0是吧?
3、int3 是什么用?和syscall搭配的吗
4、假设加载这段汇编到0x8048000并向执行它,那么eip该设置为0x8048001or0x8048002or0x8048003?0x8048004?
请解释清楚 新手谢谢大家

------解决方案--------------------
1 eax属于“易失存储器”,由于最后要放函数返回值,pop eax 无意义;4个pop后,esp 自动恢复,无需保存。
2 没错
3 调用3号中断(虽然我不知道3号具体是干嘛的)
4 不清楚,我还一直觉得是 0x8048000 。待大侠解答。
------解决方案--------------------
"我查阅到ebx,ecx,edx,esi和edi一般都是放参数的,那么这段代码只push保存其中3个"
在win下这些参数会从右至左push进栈,这里我没看到,Linux下我不是太熟,不过貌似不会吧eax这种寄存器作为参数吧?,这是什么函数调用的汇编?
------解决方案--------------------
int3 是进入调试的中断
在GDB中单步执行,看每步对内存和寄存器的影响。
layout src:显示源代码窗口
layout asm:显示反汇编窗口
layout regs:显示源代码/反汇编和CPU寄存器窗口
layout split:显示源代码和反汇编窗口


------解决方案--------------------
1.上一函数栈顶esp由ebp保存,eax一般用来存返回值或入参,不用保存
2.xor异或
3.调三号中断
4.不是,变长指令每个指令占内存数不一样,好像没有一个字节的指令?~~

------解决方案--------------------
引用:
谢谢 zhao4zhong1 高人 
gdb单步调试时,可以看到内存和寄存器的变化
你是怎么看到的? 是使用其他工具的吗

再次 问题3 被高人解决



linux下 info reg可以看到寄存器的值,ni是单步执行
vc 下,有个窗口可以看寄存器