Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 18 reacties
Bron: The Netwide Assembler

Assembly is een van de oudste programmeertalen, die tegenwoordig vaak wordt gebruikt voor het optimaliseren van toepassingen. Nasm kan assembly omzetten naar verschillende binaire objectformaten zoals elf, coff, Mach-O, win32 en win64. De programmeurs hebben in de tweede helft van 2007 de ontwikkeling van Nasm in goede moed opgepakt waardoor ondersteuning voor x86-64 en sse3, 4.1, 4.2 en 5 niet meer ontbreken. De ontwikkelaars hebben zojuist versie 2.03 uitgebracht voorzien van de volgende lijst met aanpassingen:

Version 2.03:
  • Add support for Intel AVX, CLMUL and FMA instructions, including YMM registers.
  • "dy", "resy" and "yword" for 32-byte operands.
  • Fix some SSE5 instructions.
  • Intel INVEPT, INVVPID and MOVBE instructions.
  • Fix checking for critical expressions when the optimizer is enabled.
  • Support the DWARF debugging format for ELF targets.
  • Fix optimizations of signed bytes.
  • Fix operation on bigendian machines.
  • Fix buffer overflow in the preprocessor.
  • SAFESEH support for Win32, IMAGEREL for Win64 (SEH).
  • %? and %?? to refer to the name of a macro itself. In particular, "%idefine keyword $%?" can be used to make a keyword "disappear".
  • New options for dependency generation: -MD, -MF, -MP, -MT, -MQ.
  • New preprocessor directives %pathsearch and %depend; INCBIN reimplemented as a macro.
  • %include now resolves macros in a sane manner.
  • %substr can now be used to get other than one-character substrings.
  • New type of character/string constants, using backquotes (`...`), which support C-style escape sequences.
  • %defstr and %idefstr to stringize macro definitions before creation.
  • Fix forward references used in EQU statements.
Versienummer:2.03
Releasestatus:Final
Besturingssystemen:Windows 9x, Windows NT, Windows 2000, Linux, BSD, Windows XP, DOS, macOS, OS/2, Windows Server 2003, Windows Vista
Website:The Netwide Assembler
Download:ftp://ftp.zytor.com/pub/nasm/releasebuilds/2.03/
Licentietype:Voorwaarden (GNU/BSD/etc.)
Moderatie-faq Wijzig weergave

Reacties (18)

Assembler is geen 'programmeertaal', je schrijft gewoon rechstreeks assembler met behulp van mnemonic's. Die instructie benamingen waren een 'meer leesbare' vorm gegeven omdat dit voor de mens nu eenmaal makkelijker is om te om te onthouden.

En het is verder inderdaad zonde dat er nog zo weinig rechtstreeks gebruik van gemaakt.

De dingen die men uit een C64 of Amiga wist en weet te persen heb je enkel maar te danken aan spitsvondig assembler programmeren, en zouden gewoon onmogelijk zijn in gelijk welke hogere programmeertaal..
Dan is het toch nog steeds een programmeertaal ?

Het verschil zit 'm erin dat assembler erg low-level is (1 regel code is meestal 1 x86 commando), terwijl die verhouding in andere talen vaak meer in de buurt van 1:10 tot 1:100 of zelfs 1:1000 ligt.

Vergeet echter niet dat x86 CPUs tegenwoordig erg complexe semi-RISC CPUs met multiple execution-units en lappen micro-code zijn, en dat een x86 commando door de CPU weer in micro-code wordt opgebroken. Vroeger was dat vrij recht-toe-recht-aan, maar tegenwoordig (met VM-technieken, out-of-order pipelines, etc) kan het een serieuze impact hebben.

Verder is het inderdaad jammer dat veel jongere programmeurs niet beseffen wat er bij een:
print "Hello World"; eigenlijk allemaal onder de moterkap gebeurd ...

PS: Ondanks dat assembler steeds meer een niche-wordt, is het nog steeds cruciaal voor oa. de security- en 3D-engine-wereld. Zelf merk ik dat m'n assembler ervaring anno 2008 nog steeds "voordelen" en/of extra inzichten oplevert.

[Reactie gewijzigd door SKiLLa op 11 juni 2008 13:18]

"security- en 3D-engine-wereld"
Was het niet Carmack die zelf al zei dat hij geen assembler meer gebruikte omdat de meerwaarde tegenwoordig een stuk minder is door de goede compilers?

Overigens ben ik het met je eens dat assemblerkennis nog steeds een goed inzicht geeft in het gebeuren in G3/G4 talen.
sinds de NeXt/OpenStep gebruikt hij all geen assembler meer.
Doom2/Quake2 waren op een NeXT cubeje geschreven en geport naar de PC/Mac.
Idd dus WEL een taal... de machine leest namelijk geen assembler... Die leest opcodes. En dankzij assembler kunnen we met labels en macro's werken... Dus het is wel degelijk een taal... alleen niet 1 die jij gewent bent.
laat maar wat zien, bitneukers :D
hier laten ze heel wat zien, niet alles is gemaakt met assambly, maar er zitten demo programmaatjes bij die een grafische en audio demo geven van meer dan een kwartier gepropt in een paar kilobytes

http://www.scene.org/topdownloads.php

Echt de moeite waard om te bekijken

deze bijvoorbeeld, 170k, super demo

http://www.scene.org/file.php?file=/parties/2007/breakpoint07/demo/fr-041_debris.zip&fileinfo
Hahaha, geweldig ! :D

Mijn interesse is een beetje gestopt nadat de Future Crew niet zoveel meer deed na panic

http://pouet.net/prod.php?which=479
(Assembly 93?)

Hun materiaal wordt nog steeds gebruikt voor de futuremarks benches geloof ik.
Het leuke is dat je Windows API's ook gewoon vanuit assembler kunt gebruiken. Zo kun je dus een programma incl. GUI maken in een .exetje van 2kb.

Maarja het gaat wel minder snel dan met bv. Delphi ;)
Het ontwikkelen zal misschien langzamer gaan, maar ik denk dat het uitvoeren van het exetje verrassend snel is ;)
Voor een GUI app zou die snelheid nou niet zo kritiek zijn

Mooi om te zien dat er weer releases van dit programma zijn (het is heel lang stil geweest rond nasm)

[Reactie gewijzigd door jopiesimple op 11 juni 2008 11:43]

Nou, ik ken me een oude portscanner herrineren (met GUI). Die in ASM was geschreven, die was echt rete snel!
Dit is voor mij een prachte assembler om te leren. Helaas is Assembler een beetje uitgestorven, terwijl het super handig is. Vooral om snelle en efficiente programma's te maken.
Assembler wordt volgens mij tegenwoordig vooral gebruikt om kopieerbeveiligingen te omzeilen :P
en biossen te schrijven
en bootloaders! 8-) en lowlevel stuff voor operating systems... (IRQ en exception handlers, DMA spul, Paging etc bijvoorbeeld... daar moet je toch al snel registers voor wijzigen)

[Reactie gewijzigd door Laurens-R op 11 juni 2008 16:07]

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True