看《深入理解计算机系统》遇到的问题
本帖最后由 zhujun051512 于 2012-11-18 19:05:33 编辑 小弟正在看《深入理解计算机系统》第二版,practice problem3.3有这样一个问题:
(1)movl %ax,(%esp)
(2)movb %si,8(%ebp)
解释这个表达式错在哪里。
答案是说:指令下标和寄存器id不匹配。
(2)比较好理解,应该movb改成movl,但是(1)已经是movl了,为什么有错呢?
顺便问一下,每章的homework problems没有答案,有无必要做?有点想偷懒不想做。
[解决办法]
movl是双字传输指令,两个都应改为movw
[解决办法]
课后习题理论上没必要做,这本书只是个引子。相当于导论,当做科普书看,其他的再选择性深入学习。
[解决办法]
#2 正解
movl %ax,(%esp)也可改为 movl %eax,(%esp)