The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,860 other subscribers

Archive for the ‘Quick Pascal’ Category

The C language specification describes an abstract computer, not a real one – The Old New Thing – Site Home – MSDN Blogs

Posted by jpluimers on 2014/04/09

Interesting read:

The C language specification describes an abstract computer, not a real one – The Old New Thing – Site Home – MSDN Blogs.

In other words: any language that merges null behaviour in the underlying storage will have a problem somwehere.

So if you want to have true nullable types, your null flag should be stored outside the underlying storage.

The .NET framework 2 and up, most database management systems and many other environment support that.

But most languages don’t support it for pointer types. So there will be portions of address spaces either inaccessible, or only accessible when skipping the null pointer checks.

Note that the thread above contains some very interesting bits, for instance this one:

Matt 28 Mar 2013 5:58 PM #

@MarkY “Dereferencing null is undefined?  Cool!  I thought it was guaranteed to crash, just like a false assertion or something.  So crashing is the OS guarantee, not the language guarantee apparently.”

Nope. It’s not an OS guarantee either. The OS won’t ever normally allocate memory at address zero, but there’s nothing to stop you telling it to. Try doing “VirtualAlloc(1, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE)” on your pre-Windows8 machine.

In fact, this is the reason why null-dereferences in kernel mode are often exploitable as elevation of privilege attacks. The null-page is mappable and within the user-addressable region of memory, so if the kernel dereferences a null pointer, it reads attacker controllable data.

And btw, this is the reason why on Linux and Windows8+ you can’t map the null-page.

–jeroen

via: The C language specification describes an abstract computer, not a real one – The Old New Thing – Site Home – MSDN Blogs.

Posted in .NET, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, Borland C++, Borland Pascal, C, C#, C# 2.0, C# 3.0, C# 4.0, C# 5.0, C++, C++ Builder, Database Development, Delphi, Development, Pascal, Quick Pascal, Software Development, Turbo Pascal, VB.NET, VB.NET 10.0, VB.NET 11.0, VB.NET 8.0, VB.NET 9.0 | Leave a Comment »

History: run HD image with Borland’s Turbo Pascal 5.5/6.0/7.0 and Microsoft’s QuickPascal 1.0 in VMware Fusion

Posted by jpluimers on 2014/03/12

Edit 20250102: added various “[Wayback/Archive]” archival links, VMware information, amended TUWA location, and added alternative csboot.zip download location on the Internet Archive (the Wayback Machine download is broken and the original gone)

A really long time ago, I posted in [Wayback/Archive] history – What features contributed to the evolution of Pascal? – Programmers indicating there was a [Wayback/Archive] Hard Disk Image of MS-DOS 6.22 with Pascal for Computer Studies. In fact, that is an IMG file of a DOS hard disk. And this posts shows how to use it with VMware Fusion on Mac OS X. The is a hard disk image contains:

  • A full version of MS-DOS 6.22 (MSDN Original)
  • Borland Turbo Pascal 7.0 (main)
  • Borland Turbo Pascal 6.0
  • Borland Turbo Pascal 5.5
  • Microsoft QuickPascal 1.0

Edit 20250102: does not work under VMware Fusion when you run Apple Silicon. Not figured out a performant alternative yet. Will try figuring out later.

DOS on a Mac

Read the rest of this entry »

Posted in Borland Pascal, Development, Fusion, Pascal, Power User, Quick Pascal, Software Development, Turbo Pascal, Virtualization, VMware, VMware Workstation | 1 Comment »