1
I created a code for GNU Asssembly 64-bit Linux very simple and it works. Only after strip it stops working. What may be occurring?
Beginning of the code
.section .rodata
clear:
.ascii "\033c\0"
size:
.int . -clear
.section .text
.globl _start
_start:
_zera:
xorq %rax, %rax
xorq %rdi, %rdi
xorq %rsi, %rsi
xorq %rdx, %rdx
_apaga:
movq $1, %rax
movq $1, %rdi
movq $clear, %rsi
movq size, %rdx
syscall
_fim:
movq $60, %rax
movq $0, %rdi
syscall
Thanks in advance.
It is a code that uses terminal escape sequence ( 033c) to clear the screen (like the clear command on Linux). It works before the strip and after the strip no longer works.
– Listeiro 037
What’s the problem with the code? Apparently there’s nothing wrong
– Brumazzi DB
i have driven the code without any problem, have any error giving, like terminal locked? or segmentation failure?
– Brumazzi DB
No. It just doesn’t clean the screen after the strip. I’m required to use the as (GNU Assembler) with -ggdb option otherwise the program won’t clean the screen. After that, if I wear the strip, it doesn’t clean the screen.
– Listeiro 037
places the steps you are taking for the compilation and execution of the code
– Brumazzi DB
So it works: as clrscr_64-001.s -o clrscr_64-001.o -ggdb Ld clrscr_64-001.o -o clrscr_64-001 So it doesn’t work: as clrscr_64-001.s -o clrscr_64-001.o Ld clrscr_64-001.o -o clrscr_64-001.
– Listeiro 037
worked both ways, check the version of
as, anything try to make the code in another language. mine is in version 2.26.0 with binutils 2.26.0.20160302– Brumazzi DB
What does another language mean? The version is 2.25 in Debian 8 Stable. When I made this code for x86 it worked. Now for x86_64 is not working as due.
– Listeiro 037
in another language like C, python, perl, etc. but if it worked for 32x and for 64x no, it might be some problem with your libraries.
– Brumazzi DB
I tested it on Slackware and it was the same.
– user43463
Unfortunately it still doesn’t work. I’ve tested it on two different 64-bit systems, with different assemblers. Works only with -ggdb option mount. Without the option or after strip, the code does not erase characters from the screen. It works by printing the escape sequence " 033c", which is an <ESC> (ascii 27) followed by a lowercase 'c'. This print works in other languages and even BASH script.
– Listeiro 037