鱼C论坛

 找回密码
 立即注册
查看: 4233|回复: 5

关于cpu机器码问题

[复制链接]
发表于 2011-6-24 09:13:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
cpu
1、如何将内存中的二进制转换成指令码
2、 在转换机器指令码时怎么知道是占2个字节还是3个字节或更多
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-24 09:18:31 | 显示全部楼层
第二个问题的补充:2、 在转换机器指令码时怎么知道是占2个字节还是3个字节或更多

每次CS:IP去内存拿指令时如何知道是拿几个字节的数据来转换成机器指令码?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-24 09:26:47 | 显示全部楼层
能反汇编指令,然后把人家程序的源代码重要的功能,来为自己使用
没有必要去理解一下什么二进制信息换成成汇编指令,或者汇编指令转换成二进制信息
如果这样,你还不如去研究编译器的原理!推荐清华大学的汇编课程就有这样的理论知识
想深入研究计算机科学的去学学,如果没有那么长的时间,建议还是学完汇编,就直接C,面向对象基本就差不多少了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-24 21:35:03 | 显示全部楼层
是看完汇编后的一个不解,并不是需要深究,只是了解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-24 23:02:38 | 显示全部楼层
本帖最后由 风扫地 于 2011-6-24 23:07 编辑

只是我个人的一点理解。。不正确的话。大虾请轻拍啊、、
1、如何将内存中的二进制转换成指令码
。cpu 能执行且唯一能执行的东西就只有机器代码。。
而汇编代码是机器语言的助记符。
用助记符代替操作码。。。。助记符和机器码是一一对应的(反过来不一定成立。。)
2、 在转换机器指令码时怎么知道是占2个字节还是3个字节或更多
机器码最短可以是一个字节。。一个字节可以不同的状态有256种。。cpu完全可以根据cs:ip指向的第一个字节的数据来取对应正确相应的机器码长度。。。
比如:3
cs:ip  此时 对应 a:561(均为十六进制。)
又读到 E9 7D 01 FA
这段机器码3
CPU就根据E9 这个机器码 取7d 01这两个操作数。。所以
这段机器码被解释为
jmp 06E1       ;  06E1= 017d  +0564    其中0564是数据FA的单元地址。
CLI                ;  FA 对应的助记符就是CLI、3
这里有一张机器码和助记符的对应关系。。你可以看看。。。http://wenku.baidu.com/view/bf5227ecaeaad1f346933f86.html


个人臆断。仅供参考。。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-25 22:24:50 | 显示全部楼层
:loveliness:谢谢,不过还是不理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表