Remix.run Logo
▲ intrasight 2 hours ago

The original technical debt, which cannot be paid off, was the decision to use a Von Neumann architectures instead of a Harvard architectures for CPUs.

▲layer8 5 minutes ago | parent | next [-]

That won’t help with Lisp programs. ;)

▲intrasight a few seconds ago | parent [-]

Good point, but not much infrastructure runs on Lisp

▲victorbjorklund 2 hours ago | parent | prev [-]

Explain? (Genuine question because I wanna know)

▲GTP 2 hours ago | parent | next [-]

Basically, have an explicit distinction between data and code at the architectural level, to enforce "Write xor Execute" in hardware. In this way, you would prevent e.g. a buffer overflow letting an attacker injecting shellcode that gets executed later by somehow pointing at it. AFAIK the issue would still remain with some programming languages though.

▲sznio an hour ago | parent | next [-]

don't we already have the NX bit?

and it's not sufficient anyways. even with NX you could have the attacker control a function pointer you call. in any sufficiently complex program you'll have enough widgets to build anything you want just out of data.

code and data are the same thing. whatever inputs your system receives is "code" that your application interprets, just like your application is the code that the CPU interprets. turtles all the way down.

▲intrasight 3 minutes ago | parent | next [-]

In a Harvard architecture, it's not possible to point the CPU at data.

▲rdevilla 32 minutes ago | parent | prev [-]

[dead]

▲ihavesomeexampl 29 minutes ago | parent | prev | next [-]

But.. alter data that gets executed (interpeter?), I mean, how does this work even in theory? All data is potentially code?

▲intrasight 2 minutes ago | parent [-]

All data is potentially code only in a Von Neumann architecture, but not in a Harvard architecture, where there's a separation of data and code with different memory access to each.

▲tosapple an hour ago | parent | prev | next [-]

and we don't believe a sterilized virtual machine creates a similar situation?

any respective machine doesn't require full Turing completeness?

any ad-hoc machine allows for mutations and flexibility, which I'm sure is an added strength.

2nd edit,

Also, didn't we have a weaker model of this with segmented non-flat memory models on i386-

▲AlienRobot 36 minutes ago | parent | prev [-]

How do you turn text into code in this architecture? Through the kernel?

▲rdevilla 2 hours ago | parent | prev [-]

[dead]