translating Python to Assembler

Bjoern Schliessmann usenet-mail-0306.20.chr0n0ss at spamgourmet.com
Mon Jan 28 16:00:25 CET 2008


over at thepond.com wrote:
> Bjoern Schliessmann wrote:
>> over at thepond.com wrote:

>>> That's not the point, however. I'm trying to say that a
>>> processor cannot read a Python script, and since the Python
>>> interpreter as stored on disk is essentially an assembler file,
>>
>> It isn't; it's an executable.
> 
> I appreciated the intelligent response I received from you
> earlier, now we're splitting hairs.  :-)  

Not at all. Assembly source is ASCII text. An executable commonly
consists of a binary header (which contains various information
=> man elf) as well as code and data segments. Normally, you're only
guaranteed to find machine language inside the code segments.

> Assembler, like any other higher level language 

Assembler is _no_ high level language, though there are some
assembly languages striving for resembling HLLs. 

http://webster.cs.ucr.edu/AsmTools/HLA/index.html

> is written as a source file and is compiled to a binary. 

BMPs are binaries, too. Assembly code is compiled to object code
files.

> An executable is one form of a binary, as is a dll. When you view
> the disassembly of a binary, there is a distinct difference
> between C, C++, Delphi, Visual Basic, DOS, 

I don't think so. How a HLL source is translated to machine code
depends on the compiler, and there are cross compilers.

> or even between the different file types like PE, NE, MZ, etc. 

Yes.

> But they all decompile to assembler. 

No. They all _contain_ code segments (which contain machine code),
but also different data.

> While they are in the binary format, they are exactly
> that...binary. 

http://en.wikipedia.org/wiki/Binary_data

> Who would want to interpret a long string of 1's and 0's. Binaries
> are not stored in hexadecimal on disk nor are they in hexadecimal
> in memory. But, all the 1's and 0's are in  codes when they are
> instructions or ASCII strings.  

No -- they're voltages or magnetic fields. (I never saw "0"s or "1"s
in a memory chip or on a hard disk.) The representation of this
data is up to the viewing human being to choose.

> No other high level language has the one to one relationship that
> assembler has to machine code, the actual language of the
> computer. 

Yes. That's why Assembly language is not "high level", but "low
level".
 
> All the ASCIi strings end with 0x74 in the disassembly. 

*sigh*

> I have noted that Python uses a newline as a line feed/carriage
> return.

(The means of line separation is not chosen just like this by Python
users. It's convention depending on the OS and the application.)

> Now I'm getting it. It could all be disassembled with a hex
> editor, but a disassembler is better for getting things in order.

Argl. A hex editor just displays a binary file as hexadecimal
numbers, it does _not_ disassemble.

"Disassembly" refers to _interpreting_ a file as machine
instructions of one particular architecture. This, of course, only
makes sense if this binary file actually contains machine
instructions that make sense, not if it's really a picture or a
sound file.

Regards,


Björn

-- 
BOFH excuse #130:

new management




More information about the Python-list mailing list