On 2/3/25 17:43, ben via cctalk wrote:
> On 2025-02-03 5:06 p.m., Chuck Guzis via cctalk wrote:
>> On 2/3/25 15:47, ben via cctalk wrote:
>>> No compiler generates bad code,just some hardware was never meant to
>>> have stack based addressing, like the 6502 or the 8088/8086.
>>
>> Really?  The x86 family does indeed have stack-based addressing.  In
>> particular, The BP register holds the base of the stack frame and the
>> assumed segment is SS.   Even the lowly 8085 has some (undocumented) nod
>> toward stack addressing.
> 
> Was the X86 family meant for pascal type languages?
> Other than the small model, every thing is a hack.

I get the feeling that you haven't done much x86 programming.  Look at
some real code where arguments are pushed on the stack before a call,
local storage is allocated (stack frame) by setting BP, and addressing
of any member of the stack can be accomplished with {BP+displacement]
addressing.

If DS and CS are different, you can address 128KB without issues (why
would one want to change the executable code?  If you want a private
stack area, set SS to something different.

To push the point a bit further, one need not have explicit stack
hardware if a generous enough register file is provided and
register-displacement addressing is implemented. Witness, for example,
IBM 370.

--Chuck



Reply via email to