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 ‘Assembly Language’ Category

x86_opcode_structure_and_instruction_overview.pdf on -= pnx.tf =-

Posted by jpluimers on 2024/06/18

It is more than a decade old but still the best reference around [Wayback/Archive] -= pnx.tf =- has [Wayback] x86_opcode_structure_and_instruction_overview.pdf

I found it via [Wayback/Archive] Alice Climent-Pommeret on Twitter: “I’ve just discovered this amazing document showing super clearly the relation between the opcode and the instruction 🤯 …”

Read the rest of this entry »

Posted in Assembly Language, Development, Software Development, x64, x86 | Leave a Comment »

Reminder to self: check to see if Delphi improved support for MMX/SSE/AVX instructions

Posted by jpluimers on 2024/06/13

This is from a long time ago [Wayback/Archive] Does Delphi support all MMX/SSE instructions? – Stack Overflow:

Delphi 2007 supports the MMX and SSE instruction sets. Certainly, Delphi 2010 and XE support up to the SSE4.2 instruction sets (but so far no support for AVX).

The [Wayback] Delphi 2005 Language Guide explained a bit, but no more recent PDF is available and the [Wayback/Archive] Embarcadero/IDERA Documentation Wiki is very much outdated on this information as per [Wayback/Archive] Talk:Assembler Syntax – RAD Studio:

Re: “Instruction Opcodes” The information on available instruction sets is outdated. D2010 and Fulcrum support the SIMD instruction sets all the way up to SSE4.2 (i.e., SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2).

–jeroen

Posted in Assembly Language, Delphi, Development, Software Development, x64, x86 | Leave a Comment »

BBC trip down memory lane – 8bitkick/BBCMicroBot: Runs your tweet on an 8-bit computer emulator

Posted by jpluimers on 2024/03/13

I am publishing this in order of the Twitter bot Social bots appearing, though I found this one later than the Apple ][ equivalent:

[Wayback/Archive] 8bitkick/BBCMicroBot: Runs your tweet on an 8-bit computer emulator which is a GitHub repository with full source code.

The odd thing is that I bumped into it while performing a [Wayback/Archive] bot that reads unicode – Twitter Search / Twitter (I was looking for a bot responding to fancy Unicode in account names and messages that makes using Twitter for visually impaired a pain to use wich I covered in To make Twitter a better place for visually impaired: please do without those fancy Unicode letters in your account and messages – Global Accessibility Awareness Day 2022 – #a11y).

It made me find this thread stat started in spring 2022:

Read the rest of this entry »

Posted in 6502, 6502 Assembly, Assembly Language, BASIC, BBC Micro B, Development, History, SocialMedia, Software Development, Twitter, TwitterBot | Leave a Comment »

BitSavers added some more Borland documentation in 2022 (most relevant for me: Assembler, Debugger, Profiler)

Posted by jpluimers on 2024/02/28

Below is a list of the Borland documentation that BitSavers added in 2022, ordered by relevance to me (and how I finally asked Peter Sawatzki if he still had the monochrome TDVIDEO.DLL he wrote for Turbo Debugger 3.0 for Windows):

Read the rest of this entry »

Posted in 8087, Algorithms, Assembly Language, Borland C++, C, C++, Debugging, Development, Floating point handling, Profiling, Software Development, Turbo Assembler, Turbo C, Turbo Debugger, Turbo Profiler, x86 | Leave a Comment »

ASRock Rack ALTRAD8U-1L2T is a mATX Motherboard for up to 128 Cores which supports IPMI!

Posted by jpluimers on 2023/05/28

I would really like to try out a system based on the interesting [Wayback/Archive] ASRock Rack ALTRAD8U-1L2T is a mATX Motherboard for up to 128 Cores specs from the PDF and ServeTheHome images below:

ASRock AMPERE ALTRADBU-1L2T
Product ASRock Rack Ampere Altra Family deep microATX motherboard
Power source Supports ATX PSU or 12V DC-in
Form Factor Deep Micro-ATX (9.6″ x 10.5″)
Processor System CPU
Chipset
1 Socket (LGA-4926) Ampere® Altra®/Altra® Max processor
System on chip
Memory Capacity 8 DDR4 288-pin DIMM Slots (1DPC); Supports:
RDIMM up to 256GB each, max. 3200MHz.
LRDIMM up to 256GB each, max. 3200MHz
Expansion PCIe slots

Others

SLOT7: PCIe4 x16
SLOT6: PCIe4 x16
SLOT5: PCIe4 x16
SLOT4: PCIe4 x16
4 SlimSAS (PCIe4 x8)
2 OCuLink (PCIe4 x4)
Storage M.2
SATA port
2 M.2 M-key (PCIe4 x4), supports 2280 form factor
N/A
Network RJ45 2 RJ45 (10GbE) by Intel® X550
1 RJ45 (1GbE) by Intel® i210
Management BMC
Dedicated IPMI
ASPEED AST2500: IPMI 2.0
1 RJ45 via Realtek RTL8211E
I/O USB
COM port
6 USB3.2 Gen1 ports: 4 rear Type-A, 2 via 19-pin header
1 (9-pin) header
Display Video 1 DB15 (VGA), 1 (15-pin) header
Security TPM Supports 13-pin (SPI) TPM modules

Read the rest of this entry »

Posted in AArch64/arm64, ARM, Assembly Language, Development, Hardware, Power User, Software Development | Leave a Comment »

The fundamentals of programming, a thread by @isotopp on Twitter

Posted by jpluimers on 2023/03/22

Kristian Kohntöpp publishes great DevOps related threads on Twitter. [Wayback/Archive] Thread by @isotopp “I am Kris, and I am 53 now. I learned programming on a Commodore 64 in 1983. My first real programming language (because C64 isn’t one) was 6502 assembler, forwards and backwards. “ is his response, about a year and a half ago, to a request by Julia Evans (@b0rk) that I also saved: [Wayback/Archive] Thread by @b0rk on Thread Reader App – Thread Reader App.

Her request: [Archive] 🔎Julia Evans🔍 on Twitter: “if you’ve been working in computing for > 15 years — are there fundamentals that you learned “on the job” 15 years ago that you think most people aren’t learning on the job today? (I’m thinking about how for example nobody has ever paid me to write C code)” / Twitter followed by [Archive] 🔎Julia Evans🔍 on Twitter: “I’m especially interested in topics that are still relevant today (like C programming) but are just harder to pick up at work now than they used to be” / Twitter.

The start of his thread is [Archive] Kris on Twitter: “@b0rk I am Kris, and I am 53 now. I learned programming on a Commodore 64 in 1983. My first real programming language (because C64 isn’t one) was 6502 assembler, forwards and backwards.” / Twitter.

Kristian’s story is very similar to mine, though I sooner stepped up the structured programming language ladder as at high school, I had access to an Apple //e with a Z80 card (yes, the SoftCard), so could run CP/M with Turbo Pascal 1.0 (later 2.0 and 3.0) which I partly described in The calculators that got me into programming (via: calculators : Algorithms for the masses – julian m bucknall), followed by early access at the close by university to PC’s running on 8086 and up. The computer science lab, now called Snellius, but back then known as CRI for Centraal RekenInstituut – is now had an educational deal with IBM, which means they switched from the PC/XT to the PC/AT with a 80286 processor as soon as the latter came out).

Read the rest of this entry »

Posted in 6502 Assembly, Assembly Language, Development, ESP32, ESP8266, Software Development, x86 | Leave a Comment »

Very useful link: Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X

Posted by jpluimers on 2023/02/14

If I ever need to go deep into optimisation again, there is lots I can still learn from [Wayback/Archive] Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X

Thanks [Archive] Kris on Twitter: “@Kharkerlake @unixtippse Agner Fog ist eigentlich ein Anthropologe, aber er reversed interne Strukturen von Intel CPUs, und …, speziell 3. The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers ist die HPC Bibel.” / Twitter!

Must watch video with Agner about Warlike and Peaceful Societies below the signature.

–jeroen

Read the rest of this entry »

Posted in Assembly Language, C++, Development, Software Development, x64, x86 | Leave a Comment »

STM32 Simulator Early Access by Wikwi Makes: sign up through this Google docs form

Posted by jpluimers on 2022/08/18

If you like working with STM32 and want to try out a new simulator for it (by [Wayback/Archive] Wokwi (@WokwiMakes)), then sign up at
[Wayback/Archive] https://docs.google.com/forms/d/e/1FAIpQLSfpuGcUI1YdsX6o5lBhit14GPBEh6L7MVTSSDEk_HJFvBgjUQ/viewform

Via [Wayback/Archive] Wokwi on Twitter: “Want to try out the new STM32 simulator? Sign-up for early access: link.wokwi.com/stm32-simulator 🤓” and [Wayback/Archive] tnt (@tnt).

–jeroen

Read the rest of this entry »

Posted in ARM, ARM Cortex-M, Assembly Language, Development, Go (golang), Hardware Development, Software Development, STM32 | Leave a Comment »

When floating point code suddenly becomes orders magnitudes slower (via C++ – Why does changing 0.1f to 0 slow down performance by 10x? – Stack Overflow)

Posted by jpluimers on 2022/01/26

When working with converging algorithms, sometimes floating code can become very slow. That is: orders of magnitude slower than you would expect.

A very interesting answer to [Wayback] c++ – Why does changing 0.1f to 0 slow down performance by 10x? – Stack Overflow.

I’ve only quoted a few bits, read the full question and answer for more background information.

Welcome to the world of denormalized floating-point! They can wreak havoc on performance!!!

Denormal (or subnormal) numbers are kind of a hack to get some extra values very close to zero out of the floating point representation. Operations on denormalized floating-point can be tens to hundreds of times slower than on normalized floating-point. This is because many processors can’t handle them directly and must trap and resolve them using microcode.

If you print out the numbers after 10,000 iterations, you will see that they have converged to different values depending on whether 0 or 0.1 is used.

Basically, the convergence uses some values closer to zero than a normal floating point representation dan store, so a trick is used called “denormal numbers or denormalized numbers (now often called subnormal numbers)” as described in Denormal number – Wikipedia:

In a normal floating-point value, there are no leading zeros in the significand; rather, leading zeros are removed by adjusting the exponent (for example, the number 0.0123 would be written as 1.23 × 10−2). Denormal numbers are numbers where this representation would result in an exponent that is below the smallest representable exponent (the exponent usually having a limited range). Such numbers are represented using leading zeros in the significand.

Since a denormal number is a boundary case, many processors do not optimise for this.

–jeroen

Posted in .NET, Algorithms, ARM, Assembly Language, C, C#, C++, Delphi, Development, Software Development, x64, x86 | Leave a Comment »

Moore’s law has almost ended: back to the future

Posted by jpluimers on 2021/09/29

[WayBack] We’re approaching the limits of computer power – we need new programmers now | John Naughton | Opinion | The Guardian

Ever-faster processors led to bloated software, but physical limits may force a return to the concise code of the past

So back to optimisation and maybe even assembly language.

Which brings back the days gone by.

–jeroen

Read the rest of this entry »

Posted in Algorithms, Assembly Language, Development, Software Development | Leave a Comment »