|
|
发表于 2-12-2009 12:01 PM
|
显示全部楼层
其实BINARY FILE和MACHINE CODE没直接的关连.....
LEVEL FROM LOW TO HIGH
HARDWARE
----------------
OS
FILE SYSTEM
一大堆的XXXXX
----------------
HUMAN
同样的HARDWARE....不同的FILE SYSTEM也有不同的INTERPRETATION... WINDOW(SMALL ENDIAN), UNIX/LINUX/UBUNTU/SPARK(BIG ENDIAN) |
|
|
|
|
|
|
|
|
|
|
发表于 2-12-2009 10:22 PM
|
显示全部楼层
回复 19# 1234_4321 的帖子
以上只是比喻, 说的是, executable 于 一般 binary file 在program 里的分别。 不是说, executable 是 machine code。
就如你说说的, machine code 是 indipendent 的。一个 machine instruction 力如何分别, 那个是 data, 那个是地址, 那个是 instruction, 全靠 CPU 如何来定义。 久好比考卷的例子一般。 别搞错了。
同样的, 为什么 word 明白 doc 的file? , 因为word 懂得doc 力, 每一个符号的意思, 也许 00111111100010101 代表 page break, 也许11000111010101 代表是 font red color, 这些全靠那个软件如何来解释。
]
executable 也是一样, executable 力有一定的格式, OS 会根据这个格式来理解, 然后钻换为 machine instruction ( 你可以这样理解, 不过实际上的过程不是如此简单) |
|
|
|
|
|
|
|
|
|
|
发表于 2-12-2009 10:28 PM
|
显示全部楼层
回复 19# 1234_4321 的帖子
他们唯一的同点是就是, binary file, 于 cpu instruction 都可以用 binary 来表达。
好比说, 马来文, 于英文都用 alphabert, 同样是 abc , 在 英文里 air 是”空气“, 但是你若吧 air 当成马来文看, air 就成了 “水”。
同样的, 我们解释 111 是 7, 但是 word 可能认为是 font = arial, 而 msn 可能认为是 connected 等等。
这样解释会不会比较容易明白? |
|
|
|
|
|
|
|
|
|
|
发表于 3-12-2009 12:44 PM
|
显示全部楼层
原帖由 onlylonly 于 2-12-2009 10:28 PM 发表 
他们唯一的同点是就是, binary file, 于 cpu instruction 都可以用 binary 来表达。
好比说, 马来文, 于英文都用 alphabert, 同样是 abc , 在 英文里 air 是”空气“, 但是你若吧 air 当成马来文看, air 就 ...
他已经被我弄到很乱air了 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 3-12-2009 03:57 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 4-12-2009 09:52 AM
|
显示全部楼层
原帖由 aquamax 于 2009-12-2 12:01 PM 发表 
同样的HARDWARE....不同的FILE SYSTEM也有不同的INTERPRETATION... WINDOW(SMALL ENDIAN), UNIX/LINUX/UBUNTU/SPARK(BIG ENDIAN)
拿 OS 來作 Big/Little Endian 區別,不妥當吧。
x86 ---> Little Endian
PPC, SPARC, Itanium, ARM, MIPS 等等 --> Big Endian (雖然現在大部分都可以大小 Endian 互換) |
|
|
|
|
|
|
|
|
|
|
发表于 4-12-2009 10:05 AM
|
显示全部楼层
Binary files are usually thought of as being a sequence of bytes, which means the binary digits (bits) are grouped in eights. Binary files typically contain bytes that are intended to be interpreted as something other than text characters. Compiled computer programs are typical examples; indeed, compiled applications (object files) are sometimes referred to, particularly by programmers, as binaries. But binary files can also contain images, sounds, compressed versions of other files, etc. — in short, any type of file content whatsoever.
Some binary files contain headers, blocks of metadata used by a computer program to interpret the data in the file. For example, a GIF file can contain multiple images, and headers are used to identify and describe each block of image data. If a binary file does not contain any headers, it may be called a flat binary file.
http://en.wikipedia.org/wiki/Binary_file |
|
|
|
|
|
|
|
|
|
|
发表于 4-12-2009 11:51 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 4-12-2009 10:53 PM
|
显示全部楼层
还是不太明白
如果一个OS支持两种完全不兼容的机器语言,是否代表着其实是有两个不同机器语言编译的OS版本,而且在机器上编译PE只能编译成只有他自己能执行的PE?
另外有个情况不知道我理解的对不对
假设我写的本地程序读写这样的binary file,前面是一个int n,后面是n个int
在little-endian上生成的这个binary file放到big-endian上读取会得到错误结果
那么为了解决问题,我在binary file头部加多个int v, v=0x1234,如果我读取
到0x3412代表我后面读int必须swap就可以做到源码兼容
(是否还有其他方法呢?不用定义一个常数v在最前面)
如果我用java写的,不需要同样的操作的原因是因为不同平台生成档案一样 |
|
|
|
|
|
|
|
|
|
|
发表于 5-12-2009 05:08 PM
|
显示全部楼层
本帖最后由 archiles 于 5-12-2009 05:13 PM 编辑
还是不太明白
如果一个OS支持两种完全不兼容的机器语言,是否代表着其实是有两个不同机器语言编译的OS版本 ...
cristiano~7 发表于 4-12-2009 10:53 PM 
首先,你必须确定你的int 占几个bytes,有些系统不一定是四个bytes。。
二,你要知道你档案里每个 record 的length, 你才能正确的跟它排过。 你可以设置 一致的header length,然后从header 里面可以拿payload 的length。
这样你的parser/reader 再读取这个binary file 时就可以 先读header,知道length 多少,再读payload。。
STDF 的格式大概就是这样。
至于,该排big 还时small endian, 你可以先detect cpu 的种类。再进行排列。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 5-12-2009 09:08 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 5-12-2009 09:09 PM
|
显示全部楼层
本帖最后由 1234_4321 于 5-12-2009 09:35 PM 编辑
对了,想问问。。。
我们的英文有ascii这个standard来让binary代表特定的号码。。
那中文呢?日文呢??
还有还有。。
好奇下。。
"ABC"对我们来说是text....
但。。。。
这些ABC以前人家是如何输入computer的呢?
把它们当做graphic scan进电脑去? |
|
|
|
|
|
|
|
|
|
|
发表于 8-12-2009 07:49 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 8-12-2009 10:18 PM
|
显示全部楼层
那font是如何输入电脑的呢?
用scan进去吗?
还有extended ascii是过了127开始? |
|
|
|
|
|
|
|
|
|
|
发表于 9-12-2009 10:54 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|