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

perfe_ct 2006-12-26 01:21:37
我看了计算机组成原理这本书,上面有些东西让我真的是摸不着方向.
我看到指令系统这,实在很迷惑. (我是个语言只会c,看了一点数据结构的菜鸟.)
一个指令分为 操作码 和 地址码,其二地址格式为:
OPCODE A1 A2
其数学形式描述为:(A1)OP(A2)->A1或(A1)OP(A2)->A2,在这里,我想问的是:比如说一段c程序(.....为省略)
void main()
{...........
int x;
...........
x+1;
...........
...........
}就说程序编译连接成机器语言后,由操作系统连接到内存中被cpu处理,原x+1(翻译成机器语言后) 可不可算是一个指令?
我的想法是这样:
(x)+(1)->???(问号是因为我也不知道该把结果放哪)
各位前辈们,请给小弟指明一个答案吧...

...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinxizheng 2006-12-27
  • 打赏
  • 举报
回复
顶,
yeLongBox 2006-12-27
  • 打赏
  • 举报
回复
zara(Kyrie eleison) 补充的有道理
rularys 2006-12-27
  • 打赏
  • 举报
回复
就应该这样学习的
zara 2006-12-26
  • 打赏
  • 举报
回复
cfy_yelong 上面的说法不对. inc 可以操作 byte/word/dword 类型的变量的, 只要加上适当的操作数大小修饰即可, 比如:
inc byte ptr ds:[1000h]
inc word ptr ds:[2000h]
inc dword ptr ds:[3000h]
perfe_ct 2006-12-26
  • 打赏
  • 举报
回复
哦 . 学习汇编语言很有意思啊:-)

yeLongBox 2006-12-26
  • 打赏
  • 举报
回复
表示x地址单元内容加1,不过如果你的x为int类型,应该不能使用INC x指令了,因为INC指令的操作数只能为字节变量,我个人理解
perfe_ct 2006-12-26
  • 打赏
  • 举报
回复
INC x 是代表意思啊?
perfe_ct 2006-12-26
  • 打赏
  • 举报
回复
呵呵,让大家见笑了...我不懂汇编语言的,不过老师说汇编语言很重要!
yeLongBox 2006-12-26
  • 打赏
  • 举报
回复
如果代码为
x = x + 1;

愚蠢的编译器可能对应的汇编语言如下:
MOV AX,x
INC AX
MOV x,AX

聪明的编译器可能对应的汇编语言如下:
INC x

有关于汇编指令如何如何一一映射为机器指令的问题,
我也在琢磨中...
zara 2006-12-26
  • 打赏
  • 举报
回复
c 语言里面 x+1; 这样的语句一般是被丢弃的. 因为正如楼主所说, 虽然有运算, 但没有保存运算的结果, 这样的运算没有意义.
yeLongBox 2006-12-26
  • 打赏
  • 举报
回复
1、代码 x + 1; 很可能会被编译器优化掉,从而不对应任何机器码,
也就是说此处不产生机器指令;

2、为什么会有此类逻辑(不知道该把结果放哪),那你写这个代码的
意义是什么?

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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