![]() |
![]() |
#1461 | |
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 50
Posts: 5,204
|
Quote:
It is not the only workaround i had to make though. Under v39 (fixed for v40) there is a bug for narrow viewports (x<64) and lowres, perhaps linked with AGA. No crash, but an error in the system's copperlist leading to a wrong display. |
|
![]() |
![]() |
#1462 | |
Registered User
Join Date: Aug 2022
Location: UK
Posts: 2,963
|
Quote:
The findings include the fact that there was no independent software review process, no real assessment of different real world scenarios, lack of testing, etc. There was no testing at all of the specific hardware and software combination that led to the lethal combination until installation at the hospital. If you think I'm being unfair to the engineers in apportioning some of the blame to them for their hubris in falsely asserting the infallibility of their safety controls (also a finding) then be aware that I am also an engineer and take responsibility for mistakes that I make. |
|
![]() |
![]() |
#1463 | ||||||||||||||||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 2,844
|
Quote:
Quote:
Quote:
Unfortunately, most *my* mistakes are pretty obvious. Refactor a longer assembly function, miss that one register is already populated by something else - boom! Depending on how easy or complicated this function may be, this can be minutes or hours of debugging fun. If I know that the function I write is not particularly critical, why *do I* have to do the register allocation? That is a fairly trivial task the compiler can do, without much difference in results. Quote:
Quote:
Wouldn't it be better if instead of establishing a *convention* a language element would enforce that convention, and would warn you if something does not follow it? Quote:
Quote:
Quote:
Quote:
Actually, that happens pretty rarely to me. I believe the most common false warning I receive from gcc is "uninitialized variable" because by convention I compile with -Wall -pedantic (and a couple of others) to let the compiler tell me every single bit it finds suspicious, and I have a "no warning" policy. For such cases, you can initialize the variable manually - and this actually helps because you can be sure that *this* part cannot go bad if you refactor the code later on, and it is no longer "so obvous" that the variable will be, indeed, in each case initialized. So this is a good policy for robust programs. Quote:
Quote:
Quote:
Quote:
Of course, as with everything, with great power comes great responsibility. Operator overloading should only be used where it the symbol really matches closley the intended operation. The C++ standard went IMHO overboard with operator overloading for IO streams and << and >>, which makes the resulting code both less powerful and less readable. They have std::format these days which works much nicer. Python has the % operator for string formatting, which also works very nicely. That's "live and learn". Not every aspect of every language is perfect. But that I do not have to fiddle with register allocation I consider a great improvement. Quote:
A higher language is almost like a blue-print of an algorithm. Quote:
Quote:
Warnings are not a matter of a language. The C standard has absolutely nothing to say about warnings. It is the matter of a compiler implementation what it wants to warn you about. |
||||||||||||||||
![]() |
![]() |
#1464 | ||||||||||||||||||||||||||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 50
Posts: 5,204
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
![]() Quote:
Quote:
Quote:
Usually a0=source, a1=target. I tend to put same things in same registers. Should be written at the start of the function, as a comment. Quote:
Quote:
Nothing is more annoying than the language attempting to push something when we want to do otherwise. Quote:
Quote:
Quote:
My point wasn't that it works well or not, it is that this is inefficient, large, complicated software. My debugger is 11kb. Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
![]() Quote:
Quote:
Quote:
![]() Quote:
Quote:
Unitialized variables is relative rare in asm, as bss is cleared upon startup. Stale pointers can happen in asm and are more deadly, but C doesn't protect against that. Quote:
![]() |
||||||||||||||||||||||||||
![]() |
![]() |
#1465 |
Registered User
Join Date: Aug 2022
Location: UK
Posts: 2,963
|
This thread reminds me somewhat of this:
[ Show youtube player ] |
![]() |
![]() |
#1466 |
Ex nihilo nihil
Join Date: Oct 2017
Location: CH
Posts: 4,665
|
@Karlos : OT but interesting :
This documentary help understand how by training the brain adapt itself to reach performance (C or asm, as you like ![]() [ Show youtube player ] A documentary about " the trees hiding the forest " : [ Show youtube player ] There are 3 really interesting documentaries. If you liked this one, you will for sure find and watch the 2 others. Or this one in FR about antibiotics that are less and less useful due to the current use some do with it : [ Show youtube player ] |
![]() |
![]() |
#1467 |
Computer Nerd
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,603
|
Why not? I use Lua with a big float library as a programmable calculator on the Amiga. Or someone could port C# (without the massive .net framework). Also, C is higher level
![]() They're software based. There's no reason you can't do 3D with vectors on 68k. Indeed ![]() Tried C#? |
![]() |
![]() |
#1468 | ||||||||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 2,844
|
Quote:
Quote:
It is, to most degree, a waste of time. Quote:
Quote:
No, not useless. Protective. Code never stays "as it was". Program development is continuous refactoring. Quote:
And the point is? It does not matter whether there are vectors on the 68K or not. What matters is that I get the result of a vector addition, and source code line that expresses my intend perfectly. Once again, use whatever you want to use. That was never the point. Quote:
Thus, it all depends on the language. Quote:
Not? I develop on the code, and that's all that matters to me. As it doesn't have variables, and no means to check for proper initialization, that's probably not a miracle. "bss" is not a "variable". It is rather means to allocate storage space through the loader. Problem is - it's only storage, without any life time control. Quote:
*Warnings* are a good thing, and part of the tool. Use them, they provide valuable feedback. |
||||||||
![]() |
Currently Active Users Viewing This Thread: 2 (0 members and 2 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Chat GPT Amiga Assembly | rcman | Coders. Asm / Hardware | 3 | 26 March 2023 20:24 |
An Amiga coder was banned without a reason - is it ok? | litwr | project.EAB | 1 | 18 June 2021 20:38 |
Beginning Amiga Assembly Tutorial(s) | Curbie | Coders. Asm / Hardware | 15 | 29 May 2020 00:21 |
Beginning Amiga Assembly Programming | Hewitson | Coders. Tutorials | 32 | 09 October 2012 18:25 |
Amiga Assembly sources - Please help! | W4r3DeV1L | Amiga scene | 21 | 16 July 2008 08:13 |
|
|