SASM - simple crossplatform IDE for NASM, MASM, GAS and FASM assembly languages

Overview
SASM (SimpleASM) - простая кроссплатформенная среда разработки для языков ассемблера NASM, MASM, GAS, FASM с подсветкой синтаксиса и отладчиком. В SASM Вы можете легко разрабатывать и выполнять программы, написанные на языках ассемблера NASM, MASM, GAS, FASM. Вводите код в форму и запускайте приложение. Программа работает "из коробки" и хорошо подойдет для начинающих изучать язык ассемблера.
Основана на Qt. Распространяется по свободной лицензии GNU GPL v3.0.

SASM (SimpleASM) - simple Open Source crossplatform IDE for NASM, MASM, GAS, FASM assembly languages.
SASM has syntax highlighting and debugger. The program works out of the box and is great for beginners to learn assembly language. SASM is translated into Russian, English, Turkish (thanks Ali Goren), Chinese (thanks Ahmed Zetao Yang), German (thanks Sebastian Fischer), Italian (thanks Carlo Dapor), Polish (thanks Krzysztof Rossa), Hebrew (thanks Elian Kamal), Spanish (thanks Mariano Cordoba).
Licensed under the GNU GPL v3.0. Based on the Qt.

===========================================================================
How to build and run SASM:
===========================================================================
You need:
On Windows:
For building:
    C++ compiler (e.g. gcc from MinGW)
    make (e.g. mingw32-make from MinGW)
    Qt 5
For running:
    Everything needed is included.

On Linux:
For building:
    build-essential
    qtbase5-dev
    qt5-default
For running:
    gcc-multilib (x64 OS) or gcc (x86 OS)
    gdb
    nasm

Download sources and unpack their.
Go to directory with their: "cd <path>"
Further print commands:
1) "qmake" (For installing in specific directory on Linux - print: "qmake PREFIX=<path>". By default SASM installs in "/usr/bin" and "usr/share")
2) "make" for Linux and "mingw32-make" for Windows.
3) For Linux: "make install" (command "sasm" will open SASM) or run "sasm" from folder right away or put "sasm" executable file to folder "Linux" (from this folder you can run the program).
   For Windows: Put "sasm.exe" executable file to folder "Windows". From this folder you can run the program. Also you can run program right away from compilation folder.
===========================================================================

Also you can download already compiled packages 
from site https://dman95.github.io/SASM/ or 
from OBS repository https://download.opensuse.org/repositories/home:/Dman95/

More help info in file help.html
Also SASM supports doxygen: run "doxygen configfile" to generate documentation. In this documentation you can also find a small developer guide which includes information about adding new assemblers and languages support.

Copyright © 2013 Dmitriy Manushin
Comments
  • showing registers and memory windows in SASM

    showing registers and memory windows in SASM

    hello, I have a problem in my SASM, I can't show the registers and memory windows, any one knows how to solve it?

    this is my settings: image

    and this is how it shows adter I do debugging: image

    opened by YosraDaso 34
  • RWX on binaries

    RWX on binaries

    Out of curiosity is there a reason why the bins are not compiled with -z noexecstack when they are compiled with -fstack-protector-strong -fPIE.

    Is it possible to get the pro file updated to add -z noexecstack, I have worked on updating the SASM.pro file with:

    QMAKE_CXXFLAGS += -z noexecstack QMAKE_CFLAGS += -z noexecstack

    But it does not seem to follow it very well, and if I try to export my CFLAGS and build it still does not take the extra flag.

    Thoughts?

    opened by archey 13
  • "Directory NASM does not exist" -- MacOS build

    Hi. System details:

    MacOS 11.2.3 qt 5.15.2 make 3.8.1

    I built and installed without any issues excluding the following on make install:

    Error copying .../Desktop/Dman95-SASM-7e3ae6d/Linux/bin/fasm to /usr/bin/fasm: Cannot create /usr/bin/fasm for output
    make: *** [install_binfile] Error 3
    

    The executable is constructed though and I can run the program from the command line (e.g. sudo sasm.app/Contents/MacOS/sasmto) open the GUI. I next selected create new project and the following script is opened:

    
    section .text
    global CMAIN
    CMAIN:
        ;write your code here
        xor eax, eax
        ret
    

    If I try to build I get the following dialogue pop up error

    Screen Shot 2021-08-25 at 8 39 43 AM

    I have verified that the NASM directory is present in .../Dman95-SASM-7e3ae6d/Linux/share/sasm. I also have nasm installed on the system via homebrew at /usr/local/bin/nasm.

    Thanks in advance for any help or guidance.

    opened by lstrgar 10
  • Debug not working on Arch

    Debug not working on Arch

    So the debug option doesn't work on arch x86-64 (built from source). Got gdb, got gcc-multilib, but when I press Debug it says Debugging started, but no arrow appears on the breakpoints, I cannot click a checkbox near "show registers" and I cannot click step over/into etc. When I press the button to stop debugging the application crashes

    bug 
    opened by python4ever 10
  • Error:

    Error: "Directory "NASM" does not exist. Please reinstall the program." macOS 10.13

    Hey,

    I managed to compile sasm 3.10.1 for macOS 10.13, but when I try to compile the sample program, it shows me this error message:

    Error

    These are my settings: Settings

    Does anyone know how to fix this issue?

    I already tried:

    • Putting nasm into the ./sasm.app/Contents/MacOS/ folder.
    • Creating nasm folder inside ./sasm.app/Contents/MacOS/ with all the nasm binaries.
    • Running sasm with sudo & without.

    Also one more question: Where does sasm store its settings?

    question 
    opened by OhMyGodWhy 8
  • Debugger not working on Arch Linux

    Debugger not working on Arch Linux

    Version: 3.11.1 Distro: Arch Linux

    The debugger does not work at all in NASM (x86). GAS and FASM are working fine (also x86). I have similar symptoms to this issue #76 (except no crashing), which should be solved. I checked the linking options: They are correctly set to -fno-pie -no-pie.

    bug 
    opened by jakobkukla 6
  • Missing io.inc

    Missing io.inc

    Hi,

    I compiled SASM from source last weekend I have so remarks and questions. In detail:

    I got myself an old (2009) netbook (atom, i386) and installed Xubuntu 16.04 onto it. I downloaded SASM's source code from github and compiled it last weeked with some changes. That changes are: Not all mentioned dipendencies existed, also qmake did not work. Than with make and make install all was fine. After the installation I removed the folder... Now when I open SASM and want to start to compile I got the following error messages:

    /tmp/SASM/program.asm:1: fatal: unable to open include file `io.inc' gcc: error: /tmp/SASM/program.o: Datei oder Verzeichnis nicht gefunden gcc: error: /tmp/SASM/macro.o: Datei oder Verzeichnis nicht gefunden gcc: fatal error: no input files compilation terminated.

    When I understand the problem, the only important part is, that io.inc is missing (why?). That's why I have to questions. Were do I get it, and where do I have to put it in?

    With kind regards!

    opened by Meresmata 6
  • Debug memory overflows gdb.exe

    Debug memory overflows gdb.exe

    When I debug in SAsM my assembler code and I debug a memory variable thats in this case array size 100000. It will increase gdb.exe memory every time a instuction runs. Eventually gdb.exe crashes. When i debug in SASM and don't debug memory i don't have this issue.

    opened by IamLupo 5
  • Can you explain how to call C functions on Windows?

    Can you explain how to call C functions on Windows?

    Sorry for maybe stupid question, but how am I supposed to call C functions on Windows? I tried all of the following:

    • declaration with underscore and CEXTERN and call: caused error in call, not in CEXTERN
    • declaration with underscore and CEXTERN and call without undrescore: no errors in build, but crash on call (this may be my fault, so pls tell me if this is the right option)
    • declaration and call without underscore: the same as 2 (so maybe again my mistake, but I don't think if underscore wasn't necessary you would put it in help) This is the essential sample of code I tried CEXTERN _printf mov rax, 0 mov rdi, msg2
      mov rsi, 0
      call printf I understand that I can miss smth in options or smth else, so please tell if it's the case
    opened by Michael-Milligan 4
  • SASM (3.11.1) Debug not working on Ubuntu 20.04

    SASM (3.11.1) Debug not working on Ubuntu 20.04

    Debug begins with the message "Debugging started", however no line is highlighted. All "Debug" menu items remain disabled except "Continue" which has not effect. No error messages are shown. However the same version works great on Windows. I suspect this is the same problem highlighted by other on Arch linux.

    bug 
    opened by rjsargeant 4
  • Crash on OS X when clicking on Debug button twice

    Crash on OS X when clicking on Debug button twice

    sasm 3.8.0

    Reproducibility: always

    Steps:

    1. Open a project.
    2. Build.
    3. Click on Debug button twice.

    What happened: Crash.

    Process 24759 stopped
    * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGINT
        frame #0: 0x00007fffa5e7967e libsystem_kernel.dylib`__kill + 10
    libsystem_kernel.dylib`__kill:
    ->  0x7fffa5e7967e <+10>: jae    0x7fffa5e79688            ; <+20>
        0x7fffa5e79680 <+12>: movq   %rax, %rdi
        0x7fffa5e79683 <+15>: jmp    0x7fffa5e72caf            ; cerror_nocancel
        0x7fffa5e79688 <+20>: retq   
    (lldb) bt
    * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGINT
      * frame #0: 0x00007fffa5e7967e libsystem_kernel.dylib`__kill + 10
        frame #1: 0x000000010001b57c sasm`MainWindow::debug() + 1948
        frame #2: 0x0000000100ec7280 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 2992
        frame #3: 0x0000000100238e47 QtWidgets`QAction::activate(QAction::ActionEvent) + 263
        frame #4: 0x000000010032d2f9 QtWidgets`___lldb_unnamed_symbol1134$$QtWidgets + 137
        frame #5: 0x000000010032e3a0 QtWidgets`QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 272
        frame #6: 0x00000001004079df QtWidgets`QToolButton::mouseReleaseEvent(QMouseEvent*) + 15
        frame #7: 0x0000000100283e40 QtWidgets`QWidget::event(QEvent*) + 624
        frame #8: 0x000000010032e0f0 QtWidgets`QAbstractButton::event(QEvent*) + 160
        frame #9: 0x0000000100407ff5 QtWidgets`QToolButton::event(QEvent*) + 325
        frame #10: 0x0000000100242b46 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
        frame #11: 0x0000000100245e23 QtWidgets`QApplication::notify(QObject*, QEvent*) + 8035
        frame #12: 0x0000000100e92d14 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
        frame #13: 0x000000010024350a QtWidgets`QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) + 970
        frame #14: 0x00000001002a5d22 QtWidgets`___lldb_unnamed_symbol546$$QtWidgets + 1458
        frame #15: 0x00000001002a4b3b QtWidgets`___lldb_unnamed_symbol541$$QtWidgets + 235
        frame #16: 0x0000000100242b46 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
        frame #17: 0x0000000100244079 QtWidgets`QApplication::notify(QObject*, QEvent*) + 441
        frame #18: 0x0000000100e92d14 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
        frame #19: 0x000000010081d96d QtGui`QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 2877
        frame #20: 0x000000010080660b QtGui`QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 155
        frame #21: 0x000000010566e1d1 libqcocoa.dylib`___lldb_unnamed_symbol471$$libqcocoa.dylib + 33
        frame #22: 0x00007fff8fe143b1 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
        frame #23: 0x00007fff8fdf563c CoreFoundation`__CFRunLoopDoSources0 + 556
        frame #24: 0x00007fff8fdf4b26 CoreFoundation`__CFRunLoopRun + 934
        frame #25: 0x00007fff8fdf4524 CoreFoundation`CFRunLoopRunSpecific + 420
        frame #26: 0x00007fff8f35709c HIToolbox`RunCurrentEventLoopInMode + 240
        frame #27: 0x00007fff8f356dd9 HIToolbox`ReceiveNextEventCommon + 184
        frame #28: 0x00007fff8f356d06 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71
        frame #29: 0x00007fff8d8f1eac AppKit`_DPSNextEvent + 1120
        frame #30: 0x00007fff8e06d8b6 AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796
        frame #31: 0x00007fff8d8e6833 AppKit`-[NSApplication run] + 926
        frame #32: 0x000000010566cf35 libqcocoa.dylib`___lldb_unnamed_symbol452$$libqcocoa.dylib + 2389
        frame #33: 0x0000000100e8eff1 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 417
        frame #34: 0x0000000100e93387 QtCore`QCoreApplication::exec() + 343
        frame #35: 0x0000000100007064 sasm`main + 6052
        frame #36: 0x00000001000039e4 sasm`start + 52
    (lldb) disassemble
    libsystem_kernel.dylib`__kill:
        0x7fffa5e79674 <+0>:  movl   $0x2000025, %eax          ; imm = 0x2000025 
        0x7fffa5e79679 <+5>:  movq   %rcx, %r10
        0x7fffa5e7967c <+8>:  syscall 
    ->  0x7fffa5e7967e <+10>: jae    0x7fffa5e79688            ; <+20>
        0x7fffa5e79680 <+12>: movq   %rax, %rdi
        0x7fffa5e79683 <+15>: jmp    0x7fffa5e72caf            ; cerror_nocancel
        0x7fffa5e79688 <+20>: retq   
        0x7fffa5e79689 <+21>: nop    
        0x7fffa5e7968a <+22>: nop    
        0x7fffa5e7968b <+23>: nop
    

    Expected result: sasm does not crash.

    bug 
    opened by rex4539 4
  • Debug mode / Functions C do not work

    Debug mode / Functions C do not work

    I'm trying to run a basic program that prints a hello world message to the console using the puts function.The program works fine while executing it with "Build and run" option, I mean the message is displayed in the Output. image

    But if i use the "Debug" option, the program runs but the message is not displayed in the output image

    I'm working on Windows 10 64 bits SASM  version 3.12.2 See the Build tab options configured: image

    opened by darioradu 0
  • couldnt work on macos

    couldnt work on macos

    when I try to compile something, it always warns me: Directory NASM does not exist. Please reinstall the program. the nasm has been installed on my macbook, even if I reinstalled it, I still cant let it work on it.

    opened by haliang0409-cmd 3
  • Debbugger ASCII addon

    Debbugger ASCII addon

    Hi, great software!

    Would it be possible for the debugger memory window to incorporate an ASCII option in the type selection option please.

    e.g. current options are

        SMART option converts Hello world to Helloworld
        CHAR option converts hello world to 72'H',101'e',108'l',108'l',111'o',32'',119'w',111'o',114'r',108'l',100'd
    

    requested

        ASCII option would convert Hello world to Hello world 
    

    Many thanks

    Roland!

    opened by BAT-Vanquisher 1
  • How do you get SASM to save a .lst file?

    How do you get SASM to save a .lst file?

    I've just discovered SASM and am working through all its features. So far I like it a lot.

    I'm using NASM. Here's the issue: Although there's the term -l $LSTOUTPUT$ in SASM's default assembly options line, as best I can tell no .lst file is generated during a successful build. When I build the same ,asm file from the console using a conventional makefile including the -l option, I get a .lst file.

    Is there a way to generate a .lst file from a SASM build?

    Many thanks for any advice here.

    opened by JeffDuntemann 1
  • An error has occurred in the debugger. Please check the names of the sections.

    An error has occurred in the debugger. Please check the names of the sections.

    Hello, I use SASM 3.12.2 I get always this: { Debugging started... An error has occurred in the debugger. Please check the names of the sections. Debugging finished. } I used another laptop and everything worked fine I would like to know what I need to do in my laptop to fix this problem (my laptop: 64 bit operation system) In SASM I use: mode x64, assembler NASM

    opened by khaledwawi 2
  • Warnings in builder ?

    Warnings in builder ?

    uname -a Linux 970a 5.15.32-1-MANJARO #1 SMP PREEMPT Mon Mar 28 09:16:36 UTC 2022 x86_64 GNU/Linux sasm 3.12.2

    When I try to build the simple following code manually, it works fine but not in sasm ?

    bits 32
    
    section .data
        message db "Hello World!", 10
    
    section .text
        global _start
        _start:
            mov eax, 4
            mov ebx, 1
            mov ecx, message
            mov edx, 12+1
            int 0x80
    
            mov eax, 1
            mov ebx, 0
            int 0x80
    
    nasm -g -f elf32 test2.asm -l list
    ld test2.o -m elf_i386 -o test2
    ./test2
    Hello world !
    

    Here is my sasm configuration:

    • -g -f elf32 $SOURCE$ -l $LSTOUTPUT$ -o $PROGRAM.OBJ$
    • Build in current directory
    • Disable linking

    I'm looking for logs file and I did not found I tried an other simple code with the same result ?

    Thank you for any help ;o)

    opened by aguytech 1
Releases(v3.12.2)
Easily benchmark PyTorch model FLOPs, latency, throughput, max allocated memory and energy consumption

⏱ pytorch-benchmark Easily benchmark model inference FLOPs, latency, throughput, max allocated memory and energy consumption Install pip install pytor

Lukas Hedegaard 21 Dec 22, 2022
[ICCV'21] Learning Conditional Knowledge Distillation for Degraded-Reference Image Quality Assessment

CKDN The official implementation of the ICCV2021 paper "Learning Conditional Knowledge Distillation for Degraded-Reference Image Quality Assessment" O

Multimedia Research 50 Dec 13, 2022
Simple cross-platform application for DaVinci surgical video frame annotation

About DaVid is a simple cross-platform GUI for annotating robotic and endoscopic surgical actions for use in deep-learning research. Features Simple a

Cyril Zakka 4 Oct 09, 2021
Beyond imagenet attack (accepted by ICLR 2022) towards crafting adversarial examples for black-box domains.

Beyond ImageNet Attack: Towards Crafting Adversarial Examples for Black-box Domains (ICLR'2022) This is the Pytorch code for our paper Beyond ImageNet

Alibaba-AAIG 37 Nov 23, 2022
[ICCV 2021] Amplitude-Phase Recombination: Rethinking Robustness of Convolutional Neural Networks in Frequency Domain

Amplitude-Phase Recombination (ICCV'21) Official PyTorch implementation of "Amplitude-Phase Recombination: Rethinking Robustness of Convolutional Neur

Guangyao Chen 53 Oct 05, 2022
An offline deep reinforcement learning library

d3rlpy: An offline deep reinforcement learning library d3rlpy is an offline deep reinforcement learning library for practitioners and researchers. imp

Takuma Seno 817 Jan 02, 2023
League of Legends Reinforcement Learning Environment (LoLRLE) multiple training scenarios using PPO.

League of Legends Reinforcement Learning Environment (LoLRLE) About This repo contains code to train an agent to play league of legends in a distribut

2 Aug 19, 2022
Based on Stockfish neural network(similar to LcZero)

MarcoEngine Marco Engine - interesnaya neyronnaya shakhmatnaya set', kotoraya ispol'zuyet metod samoobucheniya(dostizheniye khoroshoy igy putem proboy

Marcus Kemaul 4 Mar 12, 2022
Simple tutorials using Google's TensorFlow Framework

TensorFlow-Tutorials Introduction to deep learning based on Google's TensorFlow framework. These tutorials are direct ports of Newmu's Theano Tutorial

Nathan Lintz 6k Jan 06, 2023
Local Multi-Head Channel Self-Attention for FER2013

LHC-Net Local Multi-Head Channel Self-Attention This repository is intended to provide a quick implementation of the LHC-Net and to replicate the resu

12 Jan 04, 2023
Change is Everywhere: Single-Temporal Supervised Object Change Detection in Remote Sensing Imagery (ICCV 2021)

Change is Everywhere Single-Temporal Supervised Object Change Detection in Remote Sensing Imagery by Zhuo Zheng, Ailong Ma, Liangpei Zhang and Yanfei

Zhuo Zheng 125 Dec 13, 2022
Nonnegative spatial factorization for multivariate count data

Nonnegative spatial factorization for multivariate count data This repository contains supporting code to facilitate reproducible analysis. For detail

Will Townes 24 Dec 19, 2022
SEOVER: Sentence-level Emotion Orientation Vector based Conversation Emotion Recognition Model

SEOVER-Master This code is the implementation of paper: SEOVER: Sentence-level Emotion Orientation Vector based Conversation Emotion Recognition Model

4 Feb 24, 2022
Sequence lineage information extracted from RKI sequence data repo

Pango lineage information for German SARS-CoV-2 sequences This repository contains a join of the metadata and pango lineage tables of all German SARS-

Cornelius Roemer 24 Oct 26, 2022
This repository compare a selfie with images from identity documents and response if the selfie match.

aws-rekognition-facecompare This repository compare a selfie with images from identity documents and response if the selfie match. This code was made

1 Jan 27, 2022
LeetCode Solutions https://t.me/tenvlad

leetcode LeetCode Solutions groupped by common patterns YouTube: https://www.youtube.com/c/vladten Telegram: https://t.me/nilinterface Problems source

Vlad Ten 158 Dec 29, 2022
Reference code for the paper CAMS: Color-Aware Multi-Style Transfer.

CAMS: Color-Aware Multi-Style Transfer Mahmoud Afifi1, Abdullah Abuolaim*1, Mostafa Hussien*2, Marcus A. Brubaker1, Michael S. Brown1 1York University

Mahmoud Afifi 36 Dec 04, 2022
A framework for Quantification written in Python

QuaPy QuaPy is an open source framework for quantification (a.k.a. supervised prevalence estimation, or learning to quantify) written in Python. QuaPy

41 Dec 14, 2022
Code base for "On-the-Fly Test-time Adaptation for Medical Image Segmentation"

On-the-Fly Adaptation Official Pytorch Code base for On-the-Fly Test-time Adaptation for Medical Image Segmentation Paper Introduction One major probl

Jeya Maria Jose 17 Nov 10, 2022
Catbird is an open source paraphrase generation toolkit based on PyTorch.

Catbird is an open source paraphrase generation toolkit based on PyTorch. Quick Start Requirements and Installation The project is based on PyTorch 1.

Afonso Salgado de Sousa 5 Dec 15, 2022