Only interested in 64-bit assemblers.
I have found 4 assemblers that will work for Linux. Trouble is I don't
want to pick the wrong one. I already went from MASM32 to Goasm64.
Now due to Windows 10, I have to start all over again. Thank you Microsoft!
The Linux assemblers are: NASM, YASM, FASM and TASM.
From what I have read FASM seems to be the way to go.
Opinions Please....
I prefer HJWAsm
There's also SOLAR ASSEMBLER (http://www.oby.ro/sol_asm/docs/sol_asm_manual.htm#1.2) written by Bogdan Ontanu
When I moved to Linux I used JWASM for the first time .
Pros of using JWASM :
it's 100% MASM compatible and you can focus on learning new platform - not new syntax
If you want to program in 32 bit - you may use Open Watcom standard library ( JWLINK can link it ) . It's well documented!
Cons:
it has limited support for Linux - no FASTCALL for example but you may write your own macro or use sombody else's one to call functions from C lib etc . I have written such a macro - FCALLTEST - it can handle up to 12 parameters but doesn't have floating point arguments support.
JWLINK in 64 bit mode is very unstable and limited in functionality
I tried Solar Asm under Linux.
When I run
Quotesol_asm2.exe test.asm test.obj -elf32
I get
Quote# ./test.sh
./test.sh: line 5: sol_asm2.exe: command not found
# sol_asm2.exe
bash: sol_asm2.exe: command not found
Most likely execute permission was not set
Open terminal in directory with sol_asm and execute
ll
It will show permissions
To set exec permission:
sudo chmod +x sol_asm2.exe
To make sure that your binary is valid ELF executable:
file sol_asm2.exe
[EDIT] Oops, my bad , you should use this notation (assumed that terminal is opened in directory where sol_asm lives ):
Quote./sol_asm2.exe ...
Looks like it is not a Linux exe.
Quotesol_asm2.exe: PE32 executable (console) Intel 80386, for MS Windows
Yes, sol_asm is distributed in object form
You must link it to your C lib
Read this ( if you have the latest version) : sol_asm_2012_10_30_v36_12/bin/obj_unix_elf/read_me.txt
Hi shankle,
Did you find some good Linux x86-64 assembly tutorials? I guess the options are limited.
HI Vortex,
Yes a gentleman on the Linux mint forum gave me 3 references about NASM.
The 1st one seems to be very detailed and just what I need.
I'll probably take several weeks trying to digest them.
Until I do more reading and research, I do not at this time know if I can write,
compile and run an assembler program using NASM in Linux.
Hey shankle,
Quote from: shankle on February 14, 2016, 08:52:34 AM
Yes a gentleman on the Linux mint forum gave me 3 references about NASM.
The 1st one seems to be very detailed and just what I need.
I'll probably take several weeks trying to digest them.
Would you mind sharing those references. I'm always interested in NASM related material and I think others following your footsteps toward the Linux world might be interested as well.
Quote from: shankle on February 14, 2016, 08:52:34 AM
Until I do more reading and research, I do not at this time know if I can write,
compile and run an assembler program using NASM in Linux.
It's really not that different from coding on Windows. The biggest difference between the two are the amount of options. With Windows you have the Win API which provides you with uniform access to various features of the operating system. On Linux, the libraries can be different from system to system. For example, simple GUI applications might be dependent on Qt, or GTK, or X/Motif, or whatever.. not all systems are going to have your chosen target by default. This means that, aside from simple system call's and use of the standard C library, your code is usually going to require at least
some people to install various libraries to get your program to work. This is oddly acceptable in the Linux world and because of the large number of options for configurations and frameworks, one of the first things the Windows programmer has to learn when switching to Linux is... there is no one correct way to do anything on Linux. I myself kinda miss that about Win32 systems, being able to look up the Windows API reference and
know the one correct method to implement a given feature. But it's also liberating, in a way, to be able to choose to develop your software around libraries which share your style of coding.
Anyway, I have faith that you'll do just fine as a Linux programmer. Just avoid telling people what editor you use.. for some reason that starts HUGE arguments within the Linux community. :lol:
Best Regards,
~ Bryant
HI SBK,
The references that you requested can be found on Linuxmint.com/forum.
Then go to the Newbie folder and look under my post called "assembler
languages that work in linux". The references are given by the gentleman
called Reorx. Hope this helps.
If not tell me and I will try to find another way of getting the info to you.
Quote from: shankle on February 14, 2016, 01:46:33 AMOnly interested in 64-bit assemblers.
This is the reason I wanted to see the references. The examples you were given were specific to 32-bit mode Linux systems. These will build and work under your 64-bit Linux using compatibility mode, but you're question (at least here) was much more specific.
I would say bookmark the Linux Assembly (http://asm.sourceforge.net/) page, that one has been a great resource for years. The third link he gave you is on that page, so he really gave you 2 links. The first one is okay, but you're interested in 64-bit systems and there isn't really enough to that tutorial to warrant spending a lot of time on it.
Check out the following:
- http://cs.lmu.edu/~ray/notes/nasmtutorial/ (http://cs.lmu.edu/~ray/notes/nasmtutorial/) - Currently under development but very good.
- http://www.nasm.us/doc/ (http://www.nasm.us/doc/) - NASM's official documentation has information on 64-bit development.
- http://www.csee.umbc.edu/portal/help/nasm/sample_64.shtml (http://www.csee.umbc.edu/portal/help/nasm/sample_64.shtml) - Lots of examples.
- http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) - Not specifically NASM, but still good to have around.
Hi shankle,
my favorite assembler under Linux and BSD is YASM. You'll find some of my Linux sources inside the forum.
Quote from: shankle on February 14, 2016, 01:46:33 AM
The Linux assemblers are: NASM, YASM, FASM and TASM.
From what I have read FASM seems to be the way to go.
Opinions Please....
I think TASM won't work under Linux.
Gunther
If you prefer MASM-style assembler, definitely pick JWASM/HJWASM.
But if you don't mind trying different assemblers, NASM/FASM are fine.
Both are still under active development.
BTW, there's an interesting visual IDE (http://fresh.flatassembler.net)and UI library (http://fresh.flatassembler.net/index.cgi?page=content/related/0_FreshLib.txt) for FASM, which runs on Windows as well on Linux.
;)
Quote from: anta40 on February 15, 2016, 12:24:46 PM
...
BTW, there's an interesting visual IDE (http://fresh.flatassembler.net)and UI library (http://fresh.flatassembler.net/index.cgi?page=content/related/0_FreshLib.txt) for FASM, which runs on Windows as well on Linux.
...
Didn't tried it yet but have heard of it earlier . Their site looks very original . I really like it .
BTW One should not forget Linux native GAS assembler .
EDIT: I noticed a couple of issues with SOL_ASM's -elf64 output object format:
assemble /obj_libc/test.asm with -elf64 switch and link :
Quote/usr/bin/ld: fatal error: test.obj: unsupported ELF machine number 3
I had to edit ELF header to link it successfully
elfedit --output-mach x86-64 test.obj
Now test app is built but crashes with Segmentation fault
The reason - no FASTCALL for Linux .
It's very sad news
The thread on SOL_ASM development froze a year ago that's why I wan't to post there
I tried Sol Asm, but the examples were only programs that output text.
I am still looking for Linux programs that produce GUI programs. :-)
Quote from: Magnum on February 18, 2016, 04:07:41 PM
I am still looking for Linux programs that produce GUI programs. :-)
You might want to try these examples (http://flatassembler.net/examples/gtk-examples.tar.gz)...
Here are those examples translated to JWASM
NOTE: samples were linked against GTK 2. 24
GTK source code (http://www.gtk.org/download/linux.php) comes with nice set of examples.
GoneFishing,
Thanks for the gtk examples.
First attempt on Ubuntu MATE:
The gtk_button example seg faults on closing.
To correct it I replaced the DeleteEvent with the one from gtk_combo.
I have not done much else but it appears the examples need a little tweaking ?
James
Hi James,
gtk_button example ( and all the rest ) works fine here on Ubuntu 14.04
Tweak it as you like as I don't know why it doesn't work on your machine ( if you know it, please tell me )
[EDIT] Well, looks like I commented out
Quote; sub rsp,16
Thanks for noticing :t
[EDIT] fixed version attached
For what it's worth I settled on NASM.
From the little I know so far, it seems that it is a function (macro) driven
assembler. For ex: to put a point on the screen you call the gotoxy function.
There must be hundreds of these macros. I would guess 1 for each
corresponding windows api. Lord what a year this will be :dazzled:
Good Bye Microsoft!
No go.
Still a seg fault when window closes with gtk_button when run from terminal.
Ubuntu MATE 15.10
All gtk dev files from the repository.
James
Hmm, it must be something wrong with stack ..
Does it show message "closing application..." ?
Did you try to re-compile it from source code ?
What's about other examples?
Maybe version thing . I used GTK 2.24
Your distro seems using GTK 3.4
Thanks anta40
Quote from: jcfuller on February 18, 2016, 09:25:27 PM
...
The gtk_button example seg faults on closing.
To correct it I replaced the DeleteEvent with the one from gtk_combo.
...
Oh, after visiting dentist I was a little bit nervous and didn't notice that in gtk_combo :
Quotesub rsp,8
applied it now to gtk-button
attach updated, fingers crossed
I'm surprised how tolerant my os is - it's eagerly satisfied with all 3 variants:
Quote
; sub rsp, 16
sub rsp, 16
sub rsp,8
P.S.: Personally I prefer LTS (Long Time Support) Ubuntu distros - they have *.04 in version number
gtk_handlebox and gtk_checkmenu seg fault on execution
window.asm will not compile
HJWasm v2.13, Jan 30 2016, Masm-compatible assembler.
Portions Copyright (c) 1992-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
window.asm : Error A2168: General Failure
All others ok
GTK+ version: 2.24.28
James
Thanks James
I get this warning from GTK running gtk_handlebox and gtk_checkmenu:
Quote(gtk_handlebox:2003): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'detailed_signal != NULL' failed
Do you get SEGFAULT or this warning?
I used JWASM 2.11 when I translated these examples more than year ago ... so am using it now
[EDIT] Tomorrow I'll upload special versions of gtk_handlebox and gtk_checkmenu examples with checkpoints after each call . It'll save our time and show where exactly the crash happens
No warning on compile. Seg fault on running.
James
Ok, thanks
PLease, re-read my previous msg - it was updated
Just a FYI.
I have no experience with 64bit assembler.
I did a little Linux 32bit jwasm testing with gtk eons ago :)
I want to get at least a basic understanding of the 64bit implementation.
My interest is sparked because I am working on a new cross platform Basic -> c/c++ translator with Glib/Gtk as the base.
I have run into many inconsistencies with the Gtk2/3 platforms on both Linux and Windows.
I have spent many hours with the assorted documentation scattered around the internet, but my old brain ......
You might want to revise your demos to not use depreciated gtk functions.
It took zetcode (http://zetcode.com/gui/gtk2/) until this past July to update their offerings.
Looking forward to more info.
Am I correct there is not a working INVOKE for 64bit (Windows or Linux)?
James
Quote from: jcfuller on February 19, 2016, 10:01:50 PMAm I correct there is not a working INVOKE for 64bit (Windows or Linux)?
There is nvk by rrr314159 (http://masm32.com/board/index.php?topic=3988.0). He has used it on major sources (>10k lines).
Hello James,
Yes, I know your example gtk01. It was my starting point . I compiled it in 64 bit , see attachment below.
Quote from: jcfuller on February 19, 2016, 10:01:50 PM
...
Am I correct there is not a working INVOKE for 64bit (Windows or Linux)?
Jwasm doesn't support invoke in 64 bit on Linux . That's why I wrote FCALLTEST macro (http://masm32.com/board/index.php?topic=5153) .
Maybe I should not post yesterday's demos as they are my first steps in using JWASM on linux . Today I attach re-written version of gtk_checkmenu demo . Now it takes advantages of FCALLTEST macro . PROTOs were replaced by EXTERNs . CHECKPOINT macro was added to help us in spotting the problem.
See gtk_checkmenu_checkpoints.zip:
fc.asm - FCALLTEST macro
ISFLOAT?.asm - helper macro
gtk_checkmenu_checkpoints - is compiled with CHECKPOINT macro enabled
gtk_checkmenu - is compiled with CHECKPOINT macro disabled
At some point I was forced to stop further learning GTK development as I realised that without floating point arguments support I have poor chances to succeed in it .
Hopefully , with QWORD's help , we will fix this problem and be able to go further.
[EDIT] : added some GTK demos that come with GTK source code
Thank you for nice reference . For sure I'll revise the source code of the demos ASAP
Here are my results:
arrow.asm -> seg fault on closing window
aspectframe.asm -> seg fault on closing window
buttonbox.asm -> could not compile: missing fcXMM.asm
gtk01.asm -> OK
base.asm -> OK
buttons.asm -> OK
James
Thanks , James
Quote from: jcfuller on February 20, 2016, 01:04:21 AM
buttonbox.asm -> could not compile: missing fcXMM.asm
Just rename it to fc.asm : include fc.asm
Quote from: jcfuller on February 20, 2016, 01:04:21 AM
arrow.asm -> seg fault on closing window
aspectframe.asm -> seg fault on closing window
These demos have no invoke exit,0
Try this:
aspectframe.asm
Quote
_start:
sub rsp,8
call main
invoke exit,0
end _start
arrow.asm
Quote
; Rest in gtk_main and wait for the fun to begin!
call gtk_main
invoke exit,0
end _start
AS I've already told my OS is totally forgiving . In these 2 cases it only complains :
QuoteIllegal instruction
No go! I still get Segmentation fault (core dumped)
Here is the result of gtk_checkmenu:
checkpoint 0
checkpoint 1
checkpoint 2
checkpoint 3
checkpoint 4
checkpoint 5
checkpoint 6
checkpoint 7
checkpoint 8
checkpoint 9
checkpoint 10
checkpoint 11
checkpoint 12
checkpoint 13
checkpoint 14
checkpoint 15
(gtk_checkmenu:4197): Gtk-CRITICAL **: IA__gtk_menu_shell_insert: assertion 'GTK_IS_MENU_ITEM (child)' failed
checkpoint 16
checkpoint 17
checkpoint 18
checkpoint 19
checkpoint 20
(gtk_checkmenu:4197): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'detailed_signal != NULL' failed
checkpoint 21
checkpoint 22
checkpoint 23
checkpoint 24
checkpoint 25
checkpoint 26
checkpoint 27
checkpoint 28
checkpoint 29
checkpoint 30
checkpoint 31
checkpoint 32
checkpoint 33
checkpoint 34
checkpoint 35
checkpoint 36
checkpoint 37
checkpoint 38
checkpoint 39
checkpoint 40
checkpoint 41
checkpoint 42
checkpoint 43
checkpoint 44
checkpoint 45
checkpoint 46
checkpoint 47
checkpoint 48
checkpoint 49
checkpoint 50
checkpoint 51
checkpoint 52
checkpoint 53
checkpoint 54
checkpoint 55
checkpoint 56
checkpoint 57
checkpoint 58
checkpoint 59
checkpoint 60
checkpoint 61
checkpoint 62
checkpoint 63
checkpoint 64
checkpoint 65
checkpoint 66
checkpoint 67
checkpoint 68
checkpoint 69
checkpoint 70
checkpoint 71
checkpoint 72
checkpoint 73
closing application...
checkpoint 74
Ok I found it.
aspectframe.asm
I added your change plus I changed
invoke g_signal_connect_data , window, offset destroy, offset gtk_main_quit, NULL
To this
invoke g_signal_connect_data , window, offset destroy, gtk_main_quit,0,0,0
James
That's odd
All checkpoints passed. Should be ok
Sorry , I didn't get it - is it gtk_checkmenu segfaulting or arrow / aspectframe ( or all 3 !) ?
Now aspectframe is ok. What about arrow ?
I'll apply your changes on my side
After changing aspectframe - I get SEGFAULT at closing app
This works for aspectframe and arrow ( plus invoke exit,0 as I wrote ):
invoke g_signal_connect_data , window, offset destroy, offset gtk_main_quit,0,0,0
I found typo in gtk_checkmenu (lines 179-180 in yesterday's archive):
Quote
xor r9,r9
xor r8,r8
xor rcx,rcx
mov rdx, offset DeleteEvent
mov rsi, offset szActivate
mov rdi,[hMenuItem]
call g_signal_connect_data
mov rdi,[hMenuItem]
call g_signal_connect_data
Deleted those 2 lines, recompiled, attached
I compiled gtk_checkmenu and then ran it. No seg fault.
James
results:
checkpoint 0
checkpoint 1
checkpoint 2
checkpoint 3
checkpoint 4
checkpoint 5
checkpoint 6
checkpoint 7
checkpoint 8
checkpoint 9
checkpoint 10
checkpoint 11
checkpoint 12
checkpoint 13
checkpoint 14
checkpoint 15
(gtk_checkmenu:6066): Gtk-CRITICAL **: IA__gtk_menu_shell_insert: assertion 'GTK_IS_MENU_ITEM (child)' failed
checkpoint 16
checkpoint 17
checkpoint 18
checkpoint 19
checkpoint 20
(gtk_checkmenu:6066): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'detailed_signal != NULL' failed
checkpoint 21
checkpoint 22
checkpoint 23
checkpoint 24
checkpoint 25
checkpoint 26
checkpoint 27
checkpoint 28
checkpoint 29
checkpoint 30
checkpoint 31
checkpoint 32
checkpoint 33
checkpoint 34
checkpoint 35
checkpoint 36
checkpoint 37
checkpoint 38
checkpoint 39
checkpoint 40
checkpoint 41
checkpoint 42
checkpoint 43
checkpoint 44
checkpoint 45
checkpoint 46
checkpoint 47
checkpoint 48
checkpoint 49
checkpoint 50
checkpoint 51
checkpoint 52
checkpoint 53
checkpoint 54
checkpoint 55
checkpoint 56
checkpoint 57
checkpoint 58
checkpoint 59
checkpoint 60
checkpoint 61
checkpoint 62
checkpoint 63
checkpoint 64
checkpoint 65
checkpoint 66
checkpoint 67
checkpoint 68
checkpoint 69
checkpoint 70
checkpoint 71
checkpoint 72
checkpoint 73
closing application...
checkpoint 74
'=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
Fine!
Thanks James
I spotted the same typo in gtk_handlebox . Fixed version attached
GoneFishing,
In case you want to play with 64bit Gtk on Windows:
http://lvserver.ugent.be/gtk-win64/sdk/gtk2-gtk3-sdk-2.24.29-3.18.6-2016-01-27-ts-win64.zip
A full Gtk 2&3 development SDK.
This is what I use on the Windows side to test my new translator.
James
Thanks James,
Somewhere I have old XP box but use it not so often.
I have a present for you too ...
https://glade.gnome.org/ GTK WISIWIG (I hope so) editor.
Ther're lots of things to play with ... talking about Linux GUi : QT creator , for example
So... do we have something that's still crashing ?
Writing this to Gunther as I know he uses YASM or anyone
else so inclined. Running Linux Mint 17.3.
I downloaded yasm-1.3.0.tar.gz which I assume is for 64-bit
and the Linux mint os.
Unzipped it into /home/jack/yasmfld and extracted it there.
clicked on yasm-1.3.0 and got into the terminal and ran 'make'.
It ran fine. ' Make install' however had the following errors:
cannot create regular file '/usr/local/bin/yasm:
permission denied'. Got errors 1 & 2
I think this is caused by me putting yasm-1.3.0.tar.gz
in to wrong place. However I don't know how to put it into
/usr/local/bin/yasm in Linux Mint.
Gave up on NASM - documentation is terrible to non existent
or erroneous....
Quote from: shankle on February 21, 2016, 06:30:23 AM
Writing this to Gunther as I know he uses YASM or anyone
else so inclined. Running Linux Mint 17.3.
I downloaded yasm-1.3.0.tar.gz which I assume is for 64-bit
and the Linux mint os.
Unzipped it into /home/jack/yasmfld and extracted it there.
clicked on yasm-1.3.0 and got into the terminal and ran 'make'.
It ran fine. ' Make install' however had the following errors:
cannot create regular file '/usr/local/bin/yasm:
permission denied'. Got errors 1 & 2
I think this is caused by me putting yasm-1.3.0.tar.gz
in to wrong place. However I don't know how to put it into
/usr/local/bin/yasm in Linux Mint.
This issue is because you can run make as a normal user, but you need administrative (root) access to the filesystem to install things to /usr/local/bin. Run the make install command as root, or through the sudo command if you have sudoer's support.
Quote from: shankle on February 21, 2016, 06:30:23 AM
Gave up on NASM - documentation is terrible to non existent
or erroneous....
Terrible? I've never had issue with it, that's each person has their own opinions...
Non existent? Absolutely not. NASM Documentation (http://www.nasm.us/doc/)
Erroneous? If you have any examples of that, I'd be interested. Open source projects are great like that, if there is an error, there is almost always someone willing to fix the problem.
I stand corrected sbk.
Since I am such novice with Linux I should keep
my mouth shut. Sorry.
I saw nothing to tell me I had to run 'make install'
as root. Will do.
Quote from: shankle on February 21, 2016, 09:48:33 AM
I stand corrected sbk.
Since I am such novice with Linux I should keep
my mouth shut. Sorry.
I saw nothing to tell me I had to run 'make install'
as root. Will do.
Mint, unlike Puppy, does not run as root.
Look for files with a sh extension.
They are scripts that are useful for installations, etc.
Scripts are like batch files, but are much more powerful.
You are doing great with Linux.
It's a learning curve as with most everything. :-)
Thanks Andy for the encouragement.
NASM and I didn't get along to well.
Trying Yasm to see how it goes....
Quote from: shankle on February 21, 2016, 09:48:33 AMSince I am such novice with Linux I should keep
my mouth shut. Sorry.
That's exactly what you shouldn't do. If you have problems, you should always ask for help. You'd be surprised how many people make the same exact mistake when coming from a Windows environment. It's always difficult to remember that the default setup for most Linux systems is to give the user as little access as required to operate. Especially so if, on Windows, you always ran with a user that had administrative privileges. That's oddly common on Windows, but almost unheard of on Linux/BSD systems.
Don't be ashamed at things you don't know, there is way too much information out there for anyone to pretend they know everything. I prefer to think i know nothing, then I'm always happily surprised when I have an answer. :)
Hi shankle,
Quote from: shankle on February 21, 2016, 11:53:34 AM
Thanks Andy for the encouragement.
NASM and I didn't get along to well.
Trying Yasm to see how it goes....
Yasm is a re-write of NASM (same syntax, same commands etc.). It's sometimes a bit more effective. By the way, Agner Fog is using more and more YASM.
Gunther
Nasm has a forum.
I can't find a forum for Yasm. Therefor it's useless for me.
Wonder if any other Linux assemblers have any forums?
In my opinion, the lack of a good organized text to learn a new
programming language is essential.
On the NASM forum i'm lucky if I get 1 response per day to my questions.
With no books to study about the language and erroneous, outdated and
hard to find solutions, one wonders how anyone can program in NASM.
As an example; I have compiled a program called Demo64. Then I linked
it. But when I try to execute it with ./demo64 it will only execute in a terminal.
I want it to run it on a full screen. From what I have read there is no explanation
on how to execute a program with ./demo64 to a screen.
Quote from: shankle on February 26, 2016, 11:03:01 PM
As an example; I have compiled a program called Demo64. Then I linked
it. But when I try to execute it with ./demo64 it will only execute in a terminal.
I want it to run it on a full screen. From what I have read there is no explanation
on how to execute a program with ./demo64 to a screen.
If you run the program from a terminal emulator, it's going to run in the emulator (like xterm, rxvt, or gome-terminal). If you want to use console applications directly in the system's console (fullscreen), you have to switch to the console using ALT+CTRL+F1. Linux runs several consoles, my system has 8, ALT+CTRL+F8 runs console that the graphical environment is on, and from ALT+CTRL+F1 to ALT+CTRL+F7 run text-mode consoles. When you switch to a console, you'll have to enter your username and password, but from there you can enter commands just like you do in the terminal emulator.
I've seen some books available for Nasm programming on the Linux Operating system: http://www.amazon.com/s/ref=nb_sb_ss_c_0_23/186-0258296-3939720?url=search-alias%3Dstripbooks&field-keywords=linux+assembly+language+programming&sprefix=linux+assembly+language%2Caps%2C1051 . I haven't read any of them yet , so I can't recommend any of them. From what I've seen , Nasm is sort of a lower- level version of the Masm syntax , so I don't think it would be hard to learn: https://courses.engr.illinois.edu/ece390/archive/mp/f99/mp5/masm_nasm.html .
I forgot , there is also a Nasm manual available in .pdf format : http://www.nasm.us/xdoc/2.09.04/nasmdoc.pdf.
Thank you cman for providing the book sources. I think Ray Seyfarth's (http://www.amazon.com/Introduction-Bit-Assembly-Programming-Linux/dp/1484921909/ref=sr_1_4/190-7809170-9108402?s=books&ie=UTF8&qid=1457185937&sr=1-4&keywords=linux+assembly+language+programming) book is worth reading. I've an older edition.
Gunther
I noticed some schools have older versions of these books available to read online , like "Assembly Language Step-by-Step: Programming with Linux" can be found here: http://faculty.petra.ac.id/indi/files/Assembly%20Language%20step%20by%20step.pdf. You have to read the book on your computer, though , which isn't much fun. :biggrin:
Hi cman,
Quote from: cman on March 06, 2016, 05:16:26 AM
You have to read the book on your computer, though , which isn't much fun. :biggrin:
I think it's a PDF file, but it has 465 pages. That's the point.
Gunther