Handskriven assembler snabbar upp kod

Permalänk
Melding Plague

Handskriven assembler snabbar upp kod

Niklas Haas maskinkod gör funktioner i ffmpeg upp till hundra gånger snabbare.

Läs hela artikeln här

Visa signatur

Observera att samma trivselregler gäller i kommentarstrådarna som i övriga forumet och att brott mot dessa kan leda till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Medlem

Denna artikel får mig att tänka på serien "silicon valley" när de precis i början gör om koden i sitt packprogram 😆

Visa signatur

Star citizen - swedish umbrella. En svensk union för er spelare och organisationer som tycker om demokratiska val.
https://robertsspaceindustries.com/orgs/SWEUMB
Discord:
https://discord.com/invite/j5AkGERJz3

Permalänk
Medlem

Liknande nyhet som gjorts tidigare. Troligen clickbait även denna gång? Det blev nämligen inte "94 gånger snabbare" den förra gången det rapporterades.

https://www.sweclockers.com/nyhet/39966-viktigt-videoprogram-...

EDIT: Såg att tidigare artikeln var nämnd här också. Åtminstone är det en rimligare rubrik den här gången.

Visa signatur

Desktop: Ryzen 7 5800X3D | Radeon RX 7900 XTX | 32GB DDR4 | Arch Linux
Laptop: Ryzen 5 5600H | Nvidia RTX 3050 | 16GB DDR4 | Arch Linux

Permalänk

Liknande information kommer hela tiden, jag har hört det tillbaks till 90talet. Och det finns lösningar där assembler blir effektivast. Oftast är det dock tidsbrist/budget som hindrar.
Liksom oavsett hur mycket pengar man har, så kanske man inte hinner uppdatera en assemblerlösning inom den tidsram man har.

Jag är dock fascinerad av all bloated lösningar. Ta Nintendo Nes, spelen startas nästan direkt. Sedan ta Apple iPad med M4 och väntetiden på att vissa spel startas påminner om 486 tiden.
Man kan undra varför? Där svaret är att spelen i det senaste fallet inte precis är kodade i assembler för maximal prestanda, utan att dessa spel laddar hur mycket skit (ramverk, bibliotek) som helst i bakgrunden.

Samma sak är det med många program. Jag har använt liknande program i 90talet på en 486a och sedan använder man senaste versionen på en modern dator och de känns lika sega i uppstart, menyer etc. Såklart dagens versioner har fler funktioner, skapar ett helt annat resultat. Men när datorer idag är extremt mycket snabbare än en 486a så förväntar man sig att det ska flyta på bättre.

Permalänk
Medlem

Piratesoftware skulle behöva Niklas Haas

Visa signatur
Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Liknande information kommer hela tiden, jag har hört det tillbaks till 90talet. Och det finns lösningar där assembler blir effektivast. Oftast är det dock tidsbrist/budget som hindrar.
Liksom oavsett hur mycket pengar man har, så kanske man inte hinner uppdatera en assemblerlösning inom den tidsram man har.

Jag är dock fascinerad av all bloated lösningar. Ta Nintendo Nes, spelen startas nästan direkt. Sedan ta Apple iPad med M4 och väntetiden på att vissa spel startas påminner om 486 tiden.
Man kan undra varför? Där svaret är att spelen i det senaste fallet inte precis är kodade i assembler för maximal prestanda, utan att dessa spel laddar hur mycket skit (ramverk, bibliotek) som helst i bakgrunden.

Samma sak är det med många program. Jag har använt liknande program i 90talet på en 486a och sedan använder man senaste versionen på en modern dator och de känns lika sega i uppstart, menyer etc. Såklart dagens versioner har fler funktioner, skapar ett helt annat resultat. Men när datorer idag är extremt mycket snabbare än en 486a så förväntar man sig att det ska flyta på bättre.

Äh, ett program skrivet till en 486 fungerar typ enbart på 486:an, kanske någon enstaka till dator typ 386. Det fanns inget grafikkort att bry sig om, något säkerhetstänk eller liknande fanns inte, den behövde stödja ett enda operativsystem, med några enstaka processorer, nätverk och usb å liknande behövde de inte bry sig om. Jämfört med spel idag som ska fungera på 99999999999 olika kombinationer av datorer på flera olika operativsystem, även 10+++år gamla sådana, och det ska fungera med alla tänkbara ljudkort och grafikkort, med femtioelva olika usbenhetskombinationer och säkerhet å antipiracy ska ju också vara med å kräva prestanda.
Så det är ju inte helt otroligt att spel idag tar lite tid att starta. Å då har jag inte nämnt hur mycket mer komplexa spel är idag..

Permalänk
Medlem

Att c-kompilatorer suger på att skapa maskinkod jämfört med handknackad assembler är en grov generalisering. Kanske i deras speciella undantag? Men i det generella fallet så gör kompilatorn ett bättre jobb än de flesta människor, speciellt på moderna cpu:er.

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Liknande information kommer hela tiden, jag har hört det tillbaks till 90talet. Och det finns lösningar där assembler blir effektivast. Oftast är det dock tidsbrist/budget som hindrar.
Liksom oavsett hur mycket pengar man har, så kanske man inte hinner uppdatera en assemblerlösning inom den tidsram man har.

Är en fråga om tex "underhållbarhet" och kompatibilitet mm också...
Vad händer när nästa mikrokoduppdatering eller nästa generation processorer kommer ut, svarar de likadant på optimeringen eller behöver optimeringen skrivas om? Funkar optimeringen lika bra på Intel som AMD? Funkar det i Linux? osv osv.
Och hur många kodare klarar av att felsöka/rätta/underhålla om något går fel?

Skrivet av lillaankan_i_dammen:

Jag är dock fascinerad av all bloated lösningar. Ta Nintendo Nes, spelen startas nästan direkt. Sedan ta Apple iPad med M4 och väntetiden på att vissa spel startas påminner om 486 tiden.
Man kan undra varför?

Lite extremt att jämföra ett konsolspel som "laddar" spelet direkt från en (för sin tid) väldigt snabb ROM cartridge (som dessutom knappt behöver ett OS as we know it), mot en modern general purpose dator där inget finns i ROM.

Skrivet av lillaankan_i_dammen:

Samma sak är det med många program. Jag har använt liknande program i 90talet på en 486a och sedan använder man senaste versionen på en modern dator och de känns lika sega i uppstart, menyer etc. Såklart dagens versioner har fler funktioner, skapar ett helt annat resultat. Men när datorer idag är extremt mycket snabbare än en 486a så förväntar man sig att det ska flyta på bättre.

Här håller jag med mer att det är lite sorgligt att vi har såna sjuka mängder prestanda idag men trots det pga all bloat så upplevs det ändå inte alltid så snabbt och rappt som det borde...
Det ÄR mer bloat nu, men mycket beror ju också på det @JBerger skrev ... Mer komplex miljö nu!

*edit* och som talonmas sade så är det svårt/ovanligt att spöa kompilatorerna nuförtiden!

Lika bra jag lägger in det här citatet innan någon annan gör det

Citat:

He who hasn't hacked assembly language as a youth has no heart. He who does as an adult has no brain — John Moore

Visa signatur

A modest man is usually admired, if people ever hear of him.

Permalänk
Medlem
Skrivet av ZyntaX:

Piratesoftware skulle behöva Niklas Haas

Jag förstår att det är ett skämt, men känns inte som att den kompetens Niklas visar upp är så relevant för Piratens egentliga problem.

Visa signatur

Desktop spel m.m.: Ryzen 9800X3D || MSI X870 Tomahawk Wifi || MSI Ventus 3x 5080 || Gskill FlareX 6000 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Arbetsstation: Ryzen 7945HX || Minisforum BD790i || Asus Proart 4070 Ti Super || Kingston Fury Impact 5600 65 GB || WD SN850 2TB || Samsung 990 Pro 2TB || Fractal Ridge
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

Man måste ha i åtanke att det är vektorisersde instruktioner det handlar om. I min erfarenhet är kompilatorer inte jättebra på att omvandla komplexa operationer till vektoriserade instruktioner, även om det blir helt ok för simplare saker som att multiplicera en array med en konstant t.ex. I princip varje gång jag översätter c/c++ till handskrivna vektoriserade instruktioner så blir koden snabbare, ungefär i linje med teoretisk max för antal vektorelement.

Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Liknande information kommer hela tiden, jag har hört det tillbaks till 90talet. Och det finns lösningar där assembler blir effektivast. Oftast är det dock tidsbrist/budget som hindrar.
Liksom oavsett hur mycket pengar man har, så kanske man inte hinner uppdatera en assemblerlösning inom den tidsram man har.

Jag är dock fascinerad av all bloated lösningar. Ta Nintendo Nes, spelen startas nästan direkt. Sedan ta Apple iPad med M4 och väntetiden på att vissa spel startas påminner om 486 tiden.
Man kan undra varför? Där svaret är att spelen i det senaste fallet inte precis är kodade i assembler för maximal prestanda, utan att dessa spel laddar hur mycket skit (ramverk, bibliotek) som helst i bakgrunden.

Samma sak är det med många program. Jag har använt liknande program i 90talet på en 486a och sedan använder man senaste versionen på en modern dator och de känns lika sega i uppstart, menyer etc. Såklart dagens versioner har fler funktioner, skapar ett helt annat resultat. Men när datorer idag är extremt mycket snabbare än en 486a så förväntar man sig att det ska flyta på bättre.

Jo, men så är det alltid, ställer du fram en större kakburk kommer det främst gagna den som är först på plats. I fallet att datorer blivit snabbare kommer det främst vara utvecklare som drar nytta av det i form av genvägar de inte kunde ta förut utan att deras alster blev oanvändbart slöa.

Visa signatur

Nu lurade jag dig att slösa bort ett par värdefulla sekunder av ditt liv på att läsa denna fullständigt poänglösa signatur!

Permalänk
Medlem
Skrivet av evil penguin:

Jag förstår att det är ett skämt, men känns inte som att den kompetens Niklas visar upp är så relevant för Piratens egentliga problem.

Javisst det var ett skämt. Nej jag tror inte heller att Niklas Haas assemblerkunskaper kan lösa narcissism och spagettikod.

Visa signatur
Permalänk
Medlem

Funderar fortfarande på hur snabbt Windows hade kunnat bli med optimeringar för bland annat AVX2.

Kollar man benchmarks på Phoronix, så är det inte ovanligt att en optimerad GNU/Linux dist ger dubbla prestandan i enstaka tester mot övriga, med Windows på jumboplatsen.

Även macOS känns betydligt mer optimerat mot hårdvaran, så hade varit intressant att se hur bra Windows faktiskt skulle kunna bli.

Hoppas emellanåt på att Windows 11 stänger ute 15 år gamla CPU:er på riktigt. Microsoft får börja med lite optimering för AVX2, då AVX512 fortfarande är lite väl "nytt".

Permalänk
Hedersmedlem
Skrivet av walkir:

Hoppas emellanåt på att Windows 11 stänger ute 15 år gamla CPU:er på riktigt. Microsoft får börja med lite optimering för AVX2, då AVX512 fortfarande är lite väl "nytt".

Intel har ju inte heller AVX-512-stöd numer. De började ta bort det i mjukvara i Alder Lake (som bara hade stöd på P-cores), och nuvarande generation har inte stöd överhuvudtaget.
På klientprocessorer, då, men det är ju bara de som spelar någon större roll i den här diskussionen.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk
Medlem
Skrivet av Thomas:

Intel har ju inte heller AVX-512-stöd numer. De började ta bort det i mjukvara i Alder Lake (som bara hade stöd på P-cores), och nuvarande generation har inte stöd överhuvudtaget.
På klientprocessorer, då, men det är ju bara de som spelar någon större roll i den här diskussionen.

Tack! Hade helt missat det, då jag själv enbart har stöd för AVX2 som bäst i mina Intel-prylar.

Permalänk
Medlem
Skrivet av ZyntaX:

Piratesoftware skulle behöva Niklas Haas

Nej, det han behöver är att komma ner på jorden och sluta låtsas som att han är mer än en medioker programmerare. Om han var ödmjuk så skulle ingen ha något problem alls med honom.

Permalänk
Medlem
Skrivet av walkir:

Funderar fortfarande på hur snabbt Windows hade kunnat bli med optimeringar för bland annat AVX2.

Kollar man benchmarks på Phoronix, så är det inte ovanligt att en optimerad GNU/Linux dist ger dubbla prestandan i enstaka tester mot övriga, med Windows på jumboplatsen.

Även macOS känns betydligt mer optimerat mot hårdvaran, så hade varit intressant att se hur bra Windows faktiskt skulle kunna bli.

Hoppas emellanåt på att Windows 11 stänger ute 15 år gamla CPU:er på riktigt. Microsoft får börja med lite optimering för AVX2, då AVX512 fortfarande är lite väl "nytt".

Alla vektorinstruktioners prestandavinster bygger på att stora mängder data ligger packat i följd i minnet, så man kan läsa in t.ex 8 stycken 32bitars flyttal till ett 256bitars register (som i AVX2) i ett svep och köra matematiska funktioner på alla 8 flyttalen i en instruktion, hence SIMD (single instruction/multiple data).
Operativsystem har generellt inte den typen av arbetsuppgifter som lämpar sig särskilt bra att lösa med SIMD—de har snarare väldigt spridd data i mindre paket, med många trådar att hantera, schemaläggning, context switching och prioriteringar och den typen. Det är saker som primärt bygger på latency, snarare än bulk/batch av data som är mera bandbreddsberoende.
SIMD är värdefullt där mängder av data ska plöjas igenom med upprepade operationer, som t.ex fysiksimuleringar, neurala nätverk, eller som i fallet med artikeln, mängder av pixlar/audio samples.

Permalänk
Medlem
Skrivet av dlq84:

Nej, det han behöver är att komma ner på jorden och sluta låtsas som att han är mer än en medioker programmerare. Om han var ödmjuk så skulle ingen ha något problem alls med honom.

Synonymt med det jag sa. Jag håller med.

Visa signatur
Permalänk
Skrivet av talonmas:

Att c-kompilatorer suger på att skapa maskinkod jämfört med handknackad assembler är en grov generalisering. Kanske i deras speciella undantag? Men i det generella fallet så gör kompilatorn ett bättre jobb än de flesta människor, speciellt på moderna cpu:er.

Jag håller med om att kompilatorerna gör ett fantastiskt jobb. Inspekterar man den genererade koden går det ofta att hitta en onödig move eller att man skulle kunna hyvla bort någon instruktion om man genererat en annan instruktionssekvens, men att den koden skulle exekvera snabbare på dagens superskalära out-of-order-CPUer är långt ifrån säkert.

När vi kommer till autovektorisering så gör de dock inte ett riktigt lika bra jobb. Det funkar hyfsat för "snälla" loopar med regelbundna accesser, och ett antal mönster som förekommer i vanliga bänkmärken Beger man sig bortanför de vältrampade stigarna blir koden inte sällan långt från optimal. Ibland triggar inte vektoriseringen alls och ibland har koden stor förbättringspotential.

I AVX finns instruktioner som VPSADBW, VPMADDUBSW, VPSHUFB, VPGATHERDD och VPERMT2B. De är mycket användbara vid videoavkodning men är komplexa och kan vara svåra för en kompilator att matcha mot koden. Exempelvis summerar VPSADBW de absoluta differenserna per byte i två vektorregister.

Så i vissa fall, i innersta loopen, kan handknackad assembler göra märkbar, eller i alla fall mätbar, skillnad, men det är inget som vem som helst kan göra.

Permalänk
Medlem

"register allocator sucks on compilers." gissar på att han antyder att det är intrinsics som suger.
Skriver en del SIMD kod men hade inte orkat skriva ren asm...

Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Liknande information kommer hela tiden, jag har hört det tillbaks till 90talet. Och det finns lösningar där assembler blir effektivast. Oftast är det dock tidsbrist/budget som hindrar.
Liksom oavsett hur mycket pengar man har, så kanske man inte hinner uppdatera en assemblerlösning inom den tidsram man har.

Jag är dock fascinerad av all bloated lösningar. Ta Nintendo Nes, spelen startas nästan direkt. Sedan ta Apple iPad med M4 och väntetiden på att vissa spel startas påminner om 486 tiden.
Man kan undra varför? Där svaret är att spelen i det senaste fallet inte precis är kodade i assembler för maximal prestanda, utan att dessa spel laddar hur mycket skit (ramverk, bibliotek) som helst i bakgrunden.

Samma sak är det med många program. Jag har använt liknande program i 90talet på en 486a och sedan använder man senaste versionen på en modern dator och de känns lika sega i uppstart, menyer etc. Såklart dagens versioner har fler funktioner, skapar ett helt annat resultat. Men när datorer idag är extremt mycket snabbare än en 486a så förväntar man sig att det ska flyta på bättre.

Fast.. starttiden är helt fel sak att jämföra.
Anledningen till att spel tar tid att starta idag är till 99% att ladda in resurser från en HDD till det högpresterande minnet i GPUer, och viss del vanligt RAM. Ingen assemblerkod i världen kommer öka en SSDs läshastighet, eller PCIe-portens överföringshastighet.

Hade du lött fast högpresterande rom direkt på grafikkortet så hade moderna spel också kunnat starta omedelbart. Med haken att den processen behöver göras om varje gång du ska byta spel.

Laddtider är något vi (som i spelkonsumenter + spelindustrin) har valt att acceptera för ökade detaljrikedom och flexibilitet i att samma hårdvara funkar för alla spel.

Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Jag är dock fascinerad av all bloated lösningar. Ta Nintendo Nes, spelen startas nästan direkt. Sedan ta Apple iPad med M4 och väntetiden på att vissa spel startas påminner om 486 tiden.
Man kan undra varför? Där svaret är att spelen i det senaste fallet inte precis är kodade i assembler för maximal prestanda, utan att dessa spel laddar hur mycket skit (ramverk, bibliotek) som helst i bakgrunden.

Samma sak är det med många program. Jag har använt liknande program i 90talet på en 486a och sedan använder man senaste versionen på en modern dator och de känns lika sega i uppstart, menyer etc. Såklart dagens versioner har fler funktioner, skapar ett helt annat resultat. Men när datorer idag är extremt mycket snabbare än en 486a så förväntar man sig att det ska flyta på bättre.

En schysst DOS-terminal, fält där markeringen gick vidare när man fyllt i dem och med ett hårt slag på enter gick informationen ut, en skrivare satte igång någonstans, en databas fick en ny rad. Fälten var tomma igen, redo för nästa inmatning. Så LEAN det kan bli.

Wirth's law
"Hoppet är att framstegen inom hårdvara kommer att bota alla programvarusjukdomar. Men en kritisk betraktare kan notera att programvara ofta växer både i storlek och komplexitet snabbare än hårdvara växer i prestanda"
--- https://en.wikipedia.org/wiki/Wirth%27s_law

May's law
“Software efficiency halves every 18 months, compensating for Moore’s Law.”
-- https://en.wikipedia.org/wiki/David_May_(computer_scientist)

Problemet har diskuterats redan på 486-tiden... "Hitta vad kunden kan tolerera och maximera vinst" är en förklaring till det vi möts av varje dag. Mycket programvara som köpts in på företag är en ren förlust på grund av hur långsamt det är att arbeta i.
Att folk inte gjort sina egna projekt helt perfekt men good enough kan jag både förstå och respektera, vi har alla skit att göra och skulle man försöka optimera allt hela tiden hade inget blivit gjort.

Ur ett annat perspektiv:
Digitala enheter och mjukvara är verktyg som ska avlasta personal så de kan jobba mer effektivt, mindre stress med högre produktivitet. Idag är verkligheten den motsatta på grund av komplexa och långsamma gränssnitt.

Pust
https://www.svt.se/nyheter/lokalt/uppsala/pustandet-ar-over-p...
Cosmic
https://www.sverigesradio.se/artikel/langre-vardkoer-efter-at...
https://www.sverigesradio.se/artikel/nytt-larm-om-cosmic-lang...
Skolplatformen Stockholm
https://www.vilarare.se/nyheter/digitala-verktyg/dyr-och-dali...

Permalänk
Medlem

Är inte all assembler handskriven...?

Visa signatur

There are two kinds of people: 1. Those that can extrapolate from incomplete data.
Min tråkiga hemsida om mitt bygge och lite annat smått o gott: www.2x3m4u.net

Permalänk
Datavetare

Värt att notera i testerna som finns här är att den C-baseline som finns används i praktiken inte till något annat än vid debugging. Lite synd att man inte har med x86_64 baseline också, som är SSE2 (alla CPU-modeller som stödjer x86_64 stödjer minst SSE2, i praktiken kräver väl Windows idag minst SSE4 så det kanske är en vettig baseline).
https://ffmpeg.org/pipermail/ffmpeg-devel/2025-July/346726.ht...

Det är i.o.f.s imponerande att AVX-512 versionen är i genomsnitt 42 gånger snabbare än C-versionen, även 1,5 gånger snabbare än AVX2 är absolut inte att förakta givet nivåerna på prestandaökning vi normal ser nu för tiden.

Skrivet av talonmas:

Att c-kompilatorer suger på att skapa maskinkod jämfört med handknackad assembler är en grov generalisering. Kanske i deras speciella undantag? Men i det generella fallet så gör kompilatorn ett bättre jobb än de flesta människor, speciellt på moderna cpu:er.

Kompilatorer är idag mäkta imponerande på alla former av skalär kod. Men tyvärr kommer man inte jättelångt med autovektorisering, bl.a. p.g.a. att det ofta kan vara omöjligt för kompilator att "bevisa" att vektoriserad kod inte bryter mot det beteende som t.ex. C och C++ standard ställer på deras respektive "abstrakta maskin".

Intel forskade länge rätt hårt på att "knäcka" SIMD bara genom smarta kompilatorer. Tog Nvidias CUDA och ett Intel skunkworks vid namn ISPC (rätt mycket "CUDA för x86_64/ARM64") att inse att det finns långt bättre vägar framåt.

ISPC är väldigt likt C och C++, men man beskriver potentiell parallellism på ett väldigt snarlikt sätt som CUDA. Går garanterat att handhacka ännu bättre SIMD kod med de mer obskyra instruktionerna, men ISPC har visat sig vara kapabel att producera vektoriserad kod som presterar helt i nivå med handknackad assembler.

Den stora fördel är att en källkod då kan generera SSE, AVX, AVX-512, NEON i ett gäng varianter bara genom att köra kompilatorn med olika flaggor.

Förhoppningsvis hamnar inte ISPC på Intels chopping block som en del andra av deras projekt gjort nu (t.ex. ClearLinux som var en testing ground bl.a. för SIMD optimeringar för olika Linux bibliotek).

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Dr.Mabuse:

Är inte all assembler handskriven...?

Den kan även vara genererad från något högnivåspråk och sedan manuellt manglad för bättre prestanda. Vanligast är dock att man slänger in några rader inline i en subrutin.
https://wiki.osdev.org/Inline_Assembly/Examples

Att på ett seriöst sätt göra det helt manuellt kräver extrem erfarenhet om man skall dra full nytta av pipelinen och respektive mnemonics timing-krav. Sådan extrem-optimerad kod fungerar förmodligen optimalt på endast en arkitektur. Då är det oftast bättre att utgå från något kompilatorn har genererat. (T.ex. om man vill införa AVX-kod.)

Om någon vill titta på assemblerkoden från något program i Linux så kan kompilatorn generera två olika "dialekter". Bägge dessa är sedan direkt kompilerbara av gcc när man gjort sina förändringar.

$ gcc -S -masm=intel test.c $ cat test.s # assembler enligt intel-syntax (Dest,Src) $ gcc -S -masm=att test.c $ cat test.s # assembler enligt AT&T-syntax (Src,Dest) $ gcc test.s # kompilera assemblerkoden $ ./a.out # kör programmet