陷入泥潭,盼高人解救!(在线等)

perfe_ct 2006-12-25 12:20:06
我看了计算机组成原理这本书,上面有些东西让我真的是摸不着方向.
我看到指令系统这,实在很迷惑. (我是个语言只会c,看了一点数据结构的菜鸟.)
一个指令分为 操作码 和 地址码,其二地址格式为:
OPCODE A1 A2
其数学形式描述为:(A1)OP(A2)->A1或(A1)OP(A2)->A2,在这里,我想问的是:比如说一段c程序(.....为省略)
void main()
{...........
int x;
...........
x+1;
...........
...........
}就说程序编译连接成机器语言后,由操作系统连接到内存中被cpu处理,原x+1(翻译成机器语言后) 可不可算是一个指令?
我的想法是这样:
(x)+(1)->???(问号是因为我也不知道该把结果放哪)
各位前辈们,请给小弟指明一个答案吧...
...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
AI风 2006-12-26
  • 打赏
  • 举报
回复
ax表示一个寄存器,计算机组成原理这本书应该会讲的
处理ax,还有其它的寄存器,如bx,cx,dx等。

寄存器是CPU的一个部分,就相当于CPU的内存了。X86体系规定,CPU的运算器在计算时,必须要有一个操作数在寄存器中,而不能全是内存中的数据。
perfe_ct 2006-12-26
  • 打赏
  • 举报
回复
那么ax是什么意思呢? 什么叫做立即数啊?
kouzhongling 2006-12-26
  • 打赏
  • 举报
回复
x++:

(x)+(1)->(x)



不是,象x=x+1这样的指令多半是类似这样,
mov ax,(x)
add ax,1
mov (x),ax
------------------------------------------------------------
哇,太深奥了。。
mov ax 分别是什么意思呀?
add ax,1 中的1是说1所在的地址吗?()表示的才是地址吧?
-----------------------------------------------------------------
mov传送指令
1立即数
FourQueue 2006-12-26
  • 打赏
  • 举报
回复
mov 赋值指令
add 加

来自汇编
perfe_ct 2006-12-26
  • 打赏
  • 举报
回复
不是,象x=x+1这样的指令多半是类似这样,
mov ax,(x)
add ax,1
mov (x),ax
------------------------------------------------------------
哇,太深奥了。。
mov ax 分别是什么意思呀?
add ax,1 中的1是说1所在的地址吗?()表示的才是地址吧?
lann64 2006-12-25
  • 打赏
  • 举报
回复
可以确切的表达出来吗?
取地址是不是分别取x和1的地址啊?
-----------------------
不是,象x=x+1这样的指令多半是类似这样,
mov ax,(x)
add ax,1
mov (x),ax
lann64 2006-12-25
  • 打赏
  • 举报
回复
不能用高级语言的指令来对应汇编指令,更不能对应机器指令。往往是一条高级语言指令需要多条汇编指令才能完成。(也不是简单的对应,否则编译程序实现就太简单了。^_^)。

OPCODE A1 A2是说在机器指令体系下的通用指令格式,其中在A1 A2分别是寄存器、内存地址不同时,其实对应的机器操作也并不一样。

你那条c指令x+1多半会被编译器优化掉,生成的程序里根本没有对应的机器操作。

要理解计算机组成原理建议还是学一下汇编语言,肯定会有帮助的。
perfe_ct 2006-12-25
  • 打赏
  • 举报
回复
一条语句汇编成多条汇编指令
-----------------------------------------------------
可以确切的表达出来吗?
取地址是不是分别取x和1的地址啊?
todototry 2006-12-25
  • 打赏
  • 举报
回复
一条语句汇编成多条汇编指令,汇编指令分为
汇编格式指令,和伪指令,
汇编格式指令相对应机器指令多条

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧