From c11683a811a9d3f36d759081d87676483b691794 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Thu, 2 Mar 2023 21:34:46 +0100 Subject: [PATCH] Update --- assembly.md | 29 +++++++++++++++++++++++++++-- less_retarded_society.md | 2 +- less_retarded_software.md | 3 +++ public_domain_computer.md | 3 ++- 4 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 less_retarded_software.md diff --git a/assembly.md b/assembly.md index a3b38e9..089917a 100644 --- a/assembly.md +++ b/assembly.md @@ -8,11 +8,13 @@ The most common assembly languages you'll encounter nowadays are **[x86](x86.md) To be precise, a typical assembly language is actually more than a set of nicknames for machine code instructions, it may offer helpers such as [macros](macro.md) (something aking the C preprocessor), pseudoinstructions (commands that look like instructions but actually translate to e.g. multiple instructions), [comments](comment.md), directives, named labels for jumps (as writing literal jump addresses would be extremely tedious) etc. +Assembly is extremely low level, so you get no handholding or much programming "safety" (apart from e.g. CPU operation modes), you have to do everything yourself -- you'll be dealing with things such as function [call conventions](call_convention.md), [interrupts](interrupt.md), [syscalls](syscall.md) and their conventions, memory segments, [endianness](endianness.md), raw addresses/[goto](goto.md) jumps, call frames etc. + ## Typical Assembly Language Assembly languages are usually unstructured, i.e. there are no control structures such as `if` or `while` statements: these have to be manually implemented using labels and jump ([goto](goto.md)) instructions. There may exist macros that mimic control structures. The typical look of an assembly program is however still a single column of instructions with arguments, one per line. -The working of the language reflects the actual [hardware](hardware.md) architecture -- usually there is a small number (something like 16) of [registers](register.md) which may be called something like R0 to R15, or A, B, C etc. Sometimes registers may even be subdivided (e.g. in x86 there is an *eax* 32bit register and half of it can be used as the *ax* 16bit register). These registers are the fastest available memory (faster than the main RAM memory) and are used to perform calculations. Some registers are general purpose and some are special: typically there will be e.g. the FLAGS register which holds various 1bit results of performed operations (e.g. [overflow](overflow.md), zero result etc.). Some instructions may only work with some registers (e.g. there may be kind of a "[pointer](pointer.md)" register used to hold addresses along with instructions that work with this register, which is meant to implement [arrays](array.md)). Values can be moved between registers and the main memory. +The working of the language reflects the actual [hardware](hardware.md) architecture -- most architectures are based on [registers](register.md) so usually there is a small number (something like 16) of registers which may be called something like R0 to R15, or A, B, C etc. Sometimes registers may even be subdivided (e.g. in x86 there is an *eax* 32bit register and half of it can be used as the *ax* 16bit register). These registers are the fastest available memory (faster than the main RAM memory) and are used to perform calculations. Some registers are general purpose and some are special: typically there will be e.g. the FLAGS register which holds various 1bit results of performed operations (e.g. [overflow](overflow.md), zero result etc.). Some instructions may only work with some registers (e.g. there may be kind of a "[pointer](pointer.md)" register used to hold addresses along with instructions that work with this register, which is meant to implement [arrays](array.md)). Values can be moved between registers and the main memory. Instructions are typically written as three-letter abbreviations and follow some unwritten naming conventions so that different assembly languages at least look similar. Common instructions found in most assembly languages are for example: @@ -23,4 +25,27 @@ Instructions are typically written as three-letter abbreviations and follow some - NOP (no operation): do nothing (used e.g. for delays). - CMP (compare): compare two numbers and set relevant flags (typically for a subsequent conditional jump). -Assembly languages may offer simple helpers such as macros. \ No newline at end of file +Assembly languages may offer simple helpers such as macros. + +## Example + +TODO: some C code and how it translates to different assembly langs + +``` +#include + +char incrementDigit(char d) +{ + return + d >= '0' && d < '9' ? + d + 1 : + '?'; +} + +int main(void) +{ + char c = getchar(); + putchar(incrementDigit(c)); + return 0; +} +``` \ No newline at end of file diff --git a/less_retarded_society.md b/less_retarded_society.md index ac14bc1..015710e 100644 --- a/less_retarded_society.md +++ b/less_retarded_society.md @@ -30,7 +30,7 @@ Our society is **[anarcho pacifist](anpac.md) and [communist](communism.md)**, m **Criminality doesn't exist**, there is no motivation for it as everyone has abundance of everything, no one carries guns, people don't see themselves as competing with others in life and everyone is raised in an environment that nurtures their peaceful, collaborative, selfless loving side. People with "criminal genes" have become extinct thanks to natural selection by people voluntarily choosing to breed with non-violent people. Conflict between people is minimized by the elimination of self interest (and need for it) -- a lot of violence in current society comes from disagreement which comes from everyone's different goals (everyone aims to benefit oneself); in our society this is no longer the case, people rarely disagree on essential decisions because decisions are driven by pure facts collected without distortion or suspicion of self interest. -**[Technology](technology.md) is simple, powerful, efficient, [future proof](future_proof.md), ecological, generally good and maximally helps people**. [Internet](internet.md) is actually nice, it provides practically all [information](information.md) ever digitized, for example there is a global database of all videos ever produced, including movies, educational videos and documentaries, all without [ads](ad.md), [DRM](drm.md) and [copyright](copyright.md) strikes, coming with all known [metadata](metadata.md) such as tags, subtitles, annotations and translations and are accessible by many means (something akin websites, [APIs](api.md), physical media ...), all videos can be downloaded, mirrored and complex search queries can be performed, unlike e.g. with [YouTube](youtube.md). Satellite images, streams from all live cameras and other sensors in the world are easily accessible in real time. Search engines are much more powerful than [Google](google.md) can dream of as data is organized efficiently and friendly to indexing, not hidden behind paywalls, [JavaScript](javascript.md) obscurity or registrations to websites, which means that for example all text of all e-books is indexed as well as all conversations ever had on the Internet and subtitles of videos. All source code of all programs is available for unlimited use by anyone. There are only a few models of standardized [computers](computer.md) -- a universal **[public domain computer](public_domain_computer.md)** -- not thousands of slightly different competing products as nowadays. There is a tiny, energy efficient computer model, then a more powerful computer for complex computations, a simple computer designed to be extremely easy to manufacture etc. None of course have malicious features such as [DRM](drm.md), gay teenager aesthetics, consumerist "killer features" or planned obsolescence. All schematics are available. People possibly wear personal wrist-watch-like [computers](computer.md), however these are nothing like today's "[smart](smart.md)" watches/phones -- our wrist computers are completely under the user's control, without any bullshit, spyware, ads and other malicious features, they last weeks or months on battery as they are in low energy consumption mode whenever they're not in use, they run [extremely efficient software](lrs.md) and are NOT constantly connected to the Internet and [updating](update_culture.md) -- as an alternative to connecting to the Internet (which is still possible but requires activating a transmitter) the device may just choose to receive a world-wide broadcast of general information (which only requires a low power consumption receiver) if the user requests it (similarly to how [teletext](teletext.md) worked), e.g. info about time, weather or news that's broadcasted by towers and/or satellites and/or small local broadcasters. Furthermore wrist computers are very durable and water proof and may have built-in solar chargers, so one wrist computer works completely independently and for many decades. They have connectors to attach external devices like keyboards and bigger displays when the user needs to use the device comfortably at home. The computing world is NOT split by competing standards such as different programming languages, most programmers use just one programming language similar to [C](c.md) that's been designed to maximize quality of technology (as opposed to capitalist interests such as allowing rapid development by incompetent programmers or [update culture](update_culture.md)). +**[Technology](technology.md) is simple, powerful, efficient, [future proof](future_proof.md), ecological, generally good and maximally helps people**. [Internet](internet.md) is actually nice, it provides practically all [information](information.md) ever digitized, for example there is a global database of all videos ever produced, including movies, educational videos and documentaries, all without [ads](ad.md), [DRM](drm.md) and [copyright](copyright.md) strikes, coming with all known [metadata](metadata.md) such as tags, subtitles, annotations and translations and are accessible by many means (something akin websites, [APIs](api.md), physical media ...), all videos can be downloaded, mirrored and complex search queries can be performed, unlike e.g. with [YouTube](youtube.md). Satellite images, streams from all live cameras and other sensors in the world are easily accessible in real time. Search engines are much more powerful than [Google](google.md) can dream of as data is organized efficiently and friendly to indexing, not hidden behind paywalls, [JavaScript](javascript.md) obscurity or registrations to websites, which means that for example all text of all e-books is indexed as well as all conversations ever had on the Internet and subtitles of videos. All source code of all programs is available for unlimited use by anyone. There are only a few models of standardized [computers](computer.md) -- a universal **[public domain computer](public_domain_computer.md)** -- not thousands of slightly different competing products as nowadays. There is a tiny, energy efficient computer model, then a more powerful computer for complex computations, a simple computer designed to be extremely easy to manufacture etc. None of course have malicious features such as [DRM](drm.md), gay teenager aesthetics, consumerist "killer features" or planned obsolescence. All schematics are available. People possibly wear personal [wrist-watch-like computers](less_retarded_watch.md), however these are nothing like today's "[smart](smart.md)" watches/phones -- our wrist computers are completely under the user's control, without any bullshit, spyware, ads and other malicious features, they last weeks or months on battery as they are in low energy consumption mode whenever they're not in use, they run [extremely efficient software](lrs.md) and are NOT constantly connected to the Internet and [updating](update_culture.md) -- as an alternative to connecting to the Internet (which is still possible but requires activating a transmitter) the device may just choose to receive a world-wide broadcast of general information (which only requires a low power consumption receiver) if the user requests it (similarly to how [teletext](teletext.md) worked), e.g. info about time, weather or news that's broadcasted by towers and/or satellites and/or small local broadcasters. Furthermore wrist computers are very durable and water proof and may have built-in solar chargers, so one wrist computer works completely independently and for many decades. They have connectors to attach external devices like keyboards and bigger displays when the user needs to use the device comfortably at home. The computing world is NOT split by competing standards such as different programming languages, most programmers use just one programming language similar to [C](c.md) that's been designed to maximize quality of technology (as opposed to capitalist interests such as allowing rapid development by incompetent programmers or [update culture](update_culture.md)). **Fascism doesn't exist**, people no longer compete socially and don't live in [fear](fear_culture.md) (of immigrants, poverty, losing jobs, religious extremists etc.) that would give rise to militarist thought, society is multicultural and [races](race.md) highly mixed. There is no need for things such as [political correctness](political_correctness.md) and other censorship, people acknowledge there exist differences -- differences (e.g. in competence or performance) don't matter in a non-competitive society, discrimination doesn't exist. diff --git a/less_retarded_software.md b/less_retarded_software.md new file mode 100644 index 0000000..5c6b087 --- /dev/null +++ b/less_retarded_software.md @@ -0,0 +1,3 @@ +# Less Retarded Software + +Please kindly redirect yourself to [LRS](lrs.md). \ No newline at end of file diff --git a/public_domain_computer.md b/public_domain_computer.md index 5f79a48..e5b6092 100644 --- a/public_domain_computer.md +++ b/public_domain_computer.md @@ -36,4 +36,5 @@ Abstract hardware specification means e.g. description on the [logic gate](logic ## See Also -- [Varvara](varvara.md) computer \ No newline at end of file +- [Varvara](varvara.md) computer +- [less retarded watch](less_retarded_watch.md) \ No newline at end of file