26dae4cd
REPLY: 47a880de
PID: SoupGate-Win32 v1.05
XPost: alt.folklore.computers
The Natural Philosopher wrote:
> On 04/01/2021 17:52, Scott Lurndal wrote:
>> Martin Gregorie writes:
>>> On Mon, 04 Jan 2021 11:05:55 -0500, Dennis Lee Bieber wrote:
>>>
>>>> On Mon, 4 Jan 2021 11:00:29 +0000, gareth evans
>>>> declaimed the following:
>>>>
>>>>> Thinking back to my first job, nearly 50 years ago now,
>>>>> when I had to dis-assemble DEC's paper tape BASIC interpreter in order
>>>>> to enhance it, I guess that dis-assemblers and decompilers must now be
>>>>> ten-a-penny,
>>>>> especially for programs running under Windows where the structure of
>>>>> Windows programs is well-known with an assumption that C was the source
>>>>> language?
>>>>>
>>>> Actually, I think the use of disassemblers et al has fallen away.
>>>> Modern processors have so many peephole optimizations and out-of-order
>>>> execution streams that converting an executable back to assembly source
>>>> is almost meaningless -- and getting back to a high-level language is
>>>> near impossible. One would have to be an expert at the assembly for a
>>>> processor to have any chance of understanding the result.
>>>
>>> The retro-computing guys - those who are fans of the MC6800 and MC6809
>>> microprocessors anyway, anyway, seem to be getting a rather good semi-
>>> interactive disassembler up and running.
>>
>> Security experts have several very powerful disassemblers and decompilers
>> they use for Intel/AMD/ARM processors.
>>
>> https://en.wikibooks.org/wiki/X86_Disassembly/Disassemblers_and_Decompilers
>>
> Yes. I am certain that certain compilers and certain languages leave a
> fingerprint, Always THAT resister, used to do THAT job, always that
> particular sequence of assembly to mimic that high level construct.
> I cut my teeth on microprocessor assembly. The C. Some things that are
> neat in assembler are ugly as sin in C. Take a call table. In assembler,
> you set up a range of memory whose contents contain the addresses of
> subroutines. You load the accumulator with a number, left shift it once,
> add it to the content of a register set to point to the base of that
> memory block, and use that register as pointing to an address whose
> contents are the address you want to 'call' Simple, efficient and
> provided you ensure nothing out of bounds is in the accumulator, bomb proof.
>
> Now try that in C, you need an array of pointers to functions, and a
> simple check on the index you engage, followed by a declaration to call
> the function whose address is in the array of pointers to functions. I
> never ever managed to get an 8 bit compiler to actually do that. People
> just don't call the contents of an array of pointers to functions.
You still have to set up the arguments for each in assembler, unless they
all take the same arguments (or a pointer to an argument list)
You shouldn’t need declarations in C unless you’re using one of those
new-fangled compilers that requires them. Old code should still be
supported, though.
--
Pete
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | FidoUsenet Gateway (3:770/3)
|