Almost have an x86_64 assembly example working.
This commit is contained in:
parent
37fbe91792
commit
596c5ec5d4
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
# Ignore builds
|
# Ignore builds
|
||||||
bin/
|
bin/
|
||||||
|
*.o
|
||||||
|
14
Makefile
14
Makefile
@ -21,10 +21,12 @@
|
|||||||
# distribution.
|
# distribution.
|
||||||
|
|
||||||
# Compilers
|
# Compilers
|
||||||
|
ASM=as
|
||||||
CC=gcc
|
CC=gcc
|
||||||
CXX=g++
|
CXX=g++
|
||||||
JAVAC=javac
|
LD=ld
|
||||||
FTR=gfortran
|
FTR=gfortran
|
||||||
|
JAVAC=javac
|
||||||
|
|
||||||
# Other commands
|
# Other commands
|
||||||
RM=rm -rf
|
RM=rm -rf
|
||||||
@ -32,7 +34,13 @@ RM=rm -rf
|
|||||||
# Directories
|
# Directories
|
||||||
BINDIR=bin
|
BINDIR=bin
|
||||||
|
|
||||||
all: c cpp fortran java
|
all: x86-64asm c cpp fortran java
|
||||||
|
|
||||||
|
x86-64asm:
|
||||||
|
mkdir -p $(BINDIR)
|
||||||
|
$(ASM) -o src/main-x86_64.o src/main-x86_64.asm
|
||||||
|
$(LD) -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o \
|
||||||
|
$(BINDIR)/doublesgame-x86_64asm src/main-x86_64.o -lc
|
||||||
|
|
||||||
c:
|
c:
|
||||||
mkdir -p $(BINDIR)
|
mkdir -p $(BINDIR)
|
||||||
@ -52,4 +60,4 @@ java:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(BINDIR)
|
$(RM) src/*.o
|
||||||
|
74
src/main-x86_64.asm
Normal file
74
src/main-x86_64.asm
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
# Copyright (C) 2017 Ortega Froysa, Nicolás <deathsbreed@themusicinnoise.net> All rights reserved.
|
||||||
|
# Author: Ortega Froysa, Nicolás <deathsbreed@themusicinnoise.net>
|
||||||
|
#
|
||||||
|
# This software is provided 'as-is', without any express or implied
|
||||||
|
# warranty. In no event will the authors be held liable for any damages
|
||||||
|
# arising from the use of this software.
|
||||||
|
#
|
||||||
|
# Permission is granted to anyone to use this software for any purpose,
|
||||||
|
# including commercial applications, and to alter it and redistribute it
|
||||||
|
# freely, subject to the following restrictions:
|
||||||
|
#
|
||||||
|
# 1. The origin of this software must not be misrepresented; you must not
|
||||||
|
# claim that you wrote the original software. If you use this software
|
||||||
|
# in a product, an acknowledgment in the product documentation would be
|
||||||
|
# appreciated but is not required.
|
||||||
|
#
|
||||||
|
# 2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
# misrepresented as being the original software.
|
||||||
|
#
|
||||||
|
# 3. This notice may not be removed or altered from any source
|
||||||
|
# distribution.
|
||||||
|
#
|
||||||
|
.section .data
|
||||||
|
equation:
|
||||||
|
.ascii "2^%d=\0"
|
||||||
|
query:
|
||||||
|
.ascii "%d\0"
|
||||||
|
goodbye:
|
||||||
|
.ascii "Goodbye!\0"
|
||||||
|
tryagain:
|
||||||
|
.ascii "Wrong answer, try again.\0"
|
||||||
|
correct:
|
||||||
|
.ascii "Correct!\0"
|
||||||
|
number:
|
||||||
|
.int 1
|
||||||
|
answer:
|
||||||
|
.int 0
|
||||||
|
|
||||||
|
.section .text
|
||||||
|
.globl _start
|
||||||
|
|
||||||
|
_start:
|
||||||
|
mov number, %rsi
|
||||||
|
mov $equation, %rdi
|
||||||
|
call printf
|
||||||
|
|
||||||
|
mov $query, %rdi
|
||||||
|
mov $answer, %rsi
|
||||||
|
call scanf
|
||||||
|
cmp $0, answer
|
||||||
|
je quit
|
||||||
|
|
||||||
|
mov number, %rsi
|
||||||
|
shl $1, %rsi
|
||||||
|
cmp %rdi, answer
|
||||||
|
je next
|
||||||
|
|
||||||
|
mov $tryagain, %rdi
|
||||||
|
call puts
|
||||||
|
jmp _start
|
||||||
|
|
||||||
|
next:
|
||||||
|
mov $correct, %rdi
|
||||||
|
call puts
|
||||||
|
mov number, %rax
|
||||||
|
inc %rax
|
||||||
|
mov %rax, number
|
||||||
|
jmp _start
|
||||||
|
|
||||||
|
quit:
|
||||||
|
mov $goodbye, %rdi
|
||||||
|
call puts
|
||||||
|
mov $0, %rdi
|
||||||
|
call exit
|
Loading…
Reference in New Issue
Block a user