任何一個可以看到爲什麼以下IFS,線3279-3285在XV6-rev6代碼, 使用:XV6 rev6在系統調用怪代碼()
int num;
num = proc−>tf−>eax;
if (num >= 0 && num < SYS_open && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else if (num >= SYS_open && num < NELEM(syscalls) && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else {...}
並不僅僅是:
int num;
num = proc−>tf−>eax;
if (num >= 0 && num < NELEM(syscalls) && syscalls[num]) {
proc−>tf−>eax = syscalls[num]();
} else {...}
'if'中的兩個語句可能有一次不同,但後來改變了。是否有可以檢查該文件的某種更新日誌(如CVS/SVN/GIT日誌?)否則,您必須詢問開發人員。 –