Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- without if:
- 0xc0105f95 <+425>: xchg %bx,%bx
- 0xc0105f98 <+428>: mov 0xc010b018,%eax
- 0xc0105f9d <+433>: mov %eax,-0xc(%ebp)
- 0xc0105fa0 <+436>: jmp 0xc0105fab <fork+447>
- 0xc0105fa2 <+438>: mov -0xc(%ebp),%eax
- 0xc0105fa5 <+441>: mov 0x20(%eax),%eax
- 0xc0105fa8 <+444>: mov %eax,-0xc(%ebp)
- 0xc0105fab <+447>: mov -0xc(%ebp),%eax
- 0xc0105fae <+450>: mov 0x20(%eax),%eax
- 0xc0105fb1 <+453>: test %eax,%eax
- 0xc0105fb3 <+455>: jne 0xc0105fa2 <fork+438>
- 0xc0105fb5 <+457>: mov -0xc(%ebp),%eax
- 0xc0105fb8 <+460>: mov -0x18(%ebp),%edx
- 0xc0105fbb <+463>: mov %edx,0x20(%eax)
- 0xc0105fbe <+466>: call 0xc01061c0
- 0xc0105fc3 <+471>: mov %eax,-0x1c(%ebp)
- 0xc0105fc6 <+474>: mov 0xc010b014,%eax
- 0xc0105fcb <+479>: cmp -0x10(%ebp),%eax
- 0xc0105fce <+482>: jne 0xc0105ffc <fork+528>
- 0xc0105fd0 <+484>: mov %esp,%ebx
- 0xc0105fd2 <+486>: mov %ebx,-0x20(%ebp)
- 0xc0105fd5 <+489>: mov %ebp,%ebx
- 0xc0105fd7 <+491>: mov %ebx,-0x24(%ebp)
- 0xc0105fda <+494>: mov -0x18(%ebp),%eax
- 0xc0105fdd <+497>: mov -0x20(%ebp),%edx
- 0xc0105fe0 <+500>: mov %edx,0x8(%eax)
- 0xc0105fe3 <+503>: mov -0x18(%ebp),%eax
- 0xc0105fe6 <+506>: mov -0x24(%ebp),%edx
- 0xc0105fe9 <+509>: mov %edx,0xc(%eax)
- 0xc0105fec <+512>: mov -0x18(%ebp),%eax
- 0xc0105fef <+515>: mov -0x1c(%ebp),%edx
- 0xc0105ff2 <+518>: mov %edx,0x10(%eax)
- 0xc0105ff5 <+521>: mov -0x18(%ebp),%eax
- 0xc0105ff8 <+524>: mov (%eax),%eax
- 0xc0105ffa <+526>: jmp 0xc0106001 <fork+533>
- 0xc0105ffc <+528>: mov $0x0,%eax
- 0xc0106001 <+533>: add $0x44,%esp
- 0xc0106004 <+536>: pop %ebx
- 0xc0106005 <+537>: pop %ebp
- 0xc0106006 <+538>: ret
- with if:
- 0xc0105f95 <+425>: xchg %bx,%bx ;BOCHS_BREAKPOINT
- 0xc0105f98 <+428>: mov -0x14(%ebp),%eax
- 0xc0105f9b <+431>: mov (%eax),%eax
- 0xc0105f9d <+433>: test %eax,%eax
- 0xc0105f9f <+435>: je 0xc0105fc9 <fork+477>
- 0xc0105fa1 <+437>: mov 0xc010b018,%eax
- 0xc0105fa6 <+442>: mov %eax,-0xc(%ebp)
- 0xc0105fa9 <+445>: jmp 0xc0105fb4 <fork+456>
- 0xc0105fab <+447>: mov -0xc(%ebp),%eax
- 0xc0105fae <+450>: mov 0x20(%eax),%eax
- 0xc0105fb1 <+453>: mov %eax,-0xc(%ebp)
- 0xc0105fb4 <+456>: mov -0xc(%ebp),%eax
- 0xc0105fb7 <+459>: mov 0x20(%eax),%eax
- 0xc0105fba <+462>: test %eax,%eax
- 0xc0105fbc <+464>: jne 0xc0105fab <fork+447>
- 0xc0105fbe <+466>: mov -0xc(%ebp),%eax
- 0xc0105fc1 <+469>: mov -0x1c(%ebp),%edx
- 0xc0105fc4 <+472>: mov %edx,0x20(%eax)
- 0xc0105fc7 <+475>: jmp 0xc0105fef <fork+515>
- 0xc0105fc9 <+477>: mov 0xc010b018,%eax
- 0xc0105fce <+482>: mov %eax,-0x10(%ebp)
- 0xc0105fd1 <+485>: jmp 0xc0105fdc <fork+496>
- 0xc0105fd3 <+487>: mov -0x10(%ebp),%eax
- 0xc0105fd6 <+490>: mov 0x20(%eax),%eax
- 0xc0105fd9 <+493>: mov %eax,-0x10(%ebp)
- 0xc0105fdc <+496>: mov -0x10(%ebp),%eax
- 0xc0105fdf <+499>: mov 0x20(%eax),%eax
- 0xc0105fe2 <+502>: test %eax,%eax
- 0xc0105fe4 <+504>: jne 0xc0105fd3 <fork+487>
- 0xc0105fe6 <+506>: mov -0x10(%ebp),%eax
- 0xc0105fe9 <+509>: mov -0x1c(%ebp),%edx
- 0xc0105fec <+512>: mov %edx,0x20(%eax)
- 0xc0105fef <+515>: call 0xc01061f0
- 0xc0105ff4 <+520>: mov %eax,-0x20(%ebp)
- 0xc0105ff7 <+523>: mov 0xc010b014,%eax
- 0xc0105ffc <+528>: cmp -0x14(%ebp),%eax
- 0xc0105fff <+531>: jne 0xc010602d <fork+577>
- 0xc0106001 <+533>: mov %esp,%ebx
- 0xc0106003 <+535>: mov %ebx,-0x24(%ebp)
- 0xc0106006 <+538>: mov %ebp,%ebx
- 0xc0106008 <+540>: mov %ebx,-0x28(%ebp)
- 0xc010600b <+543>: mov -0x1c(%ebp),%eax
- 0xc010600e <+546>: mov -0x24(%ebp),%edx
- 0xc0106011 <+549>: mov %edx,0x8(%eax)
- 0xc0106014 <+552>: mov -0x1c(%ebp),%eax
- 0xc0106017 <+555>: mov -0x28(%ebp),%edx
- 0xc010601a <+558>: mov %edx,0xc(%eax)
- 0xc010601d <+561>: mov -0x1c(%ebp),%eax
- 0xc0106020 <+564>: mov -0x20(%ebp),%edx
- 0xc0106023 <+567>: mov %edx,0x10(%eax)
- 0xc0106026 <+570>: mov -0x1c(%ebp),%eax
- 0xc0106029 <+573>: mov (%eax),%eax
- 0xc010602b <+575>: jmp 0xc0106032 <fork+582>
- 0xc010602d <+577>: mov $0x0,%eax
- 0xc0106032 <+582>: add $0x44,%esp
- 0xc0106035 <+585>: pop %ebx
- 0xc0106036 <+586>: pop %ebp
- 0xc0106037 <+587>: ret
- test2:
- #include "syscall.h"
- int main() {
- int fildes = syscall_open("/dev/fb0", 16);
- if(fildes >= 0) {
- char buffer[20] = "yaaaayyy\n";
- syscall_write(fildes, buffer, 9);
- }
- int ret = syscall_fork();
- if(!ret) {
- char bufferca[20] = "CHILD_A\n";
- int fildesca = syscall_open("/dev/fb0", 16);
- if(fildesca >= 0) {
- syscall_write(fildesca, bufferca, 8);
- }
- } else {
- char buffercb[20] = "CHILD_B\n";
- int fildescb = syscall_open("/dev/fb0", 16);
- if(fildescb >= 0) {
- syscall_write(fildescb, buffercb, 8);
- }
- }
- syscall_exit();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement