Assembly language exit() syscall does not return correct value
Brandon Chase
tapedispenser7@hotmail.com
Mon Mar 15 16:29:00 GMT 2010
The following program is supposed to return a value of 222 when echo $?
run, but I get 127 every time, no matter what I change. I have looked
around but cannot seem to find out if this is an error or a
cygwin-specific value.
----------------------------------------------------------
#PURPOSE:
This program finds the maximum number of a
# set of data items.
#
#VARIABLES:
The registers have the following uses:
#
# %edi - Holds the index
of the data item being examined
# %ebx - Largest data item found
#
%eax - Current data item
#
# The following memory locations are
used:
#
# data_items - contains the item data. A 0 is used
# to
terminate the data
#
.section .data
data_items: #These are
the data items
.long 3,67,34,222,45,75,54,34,44,33,22,11,66,0
.section
.text
.globl _start
_start:
movl $0,
%edi # move 0 into the index register
movl
data_items(,%edi,4), %eax # load the first byte of data
movl
%eax, %ebx # since this is the first item,
%eax is
# the
biggest
start_loop: # start loop
cmpl
$0, %eax # check to see if we’ve hit the
end
je loop_exit
incl %edi #
load next value
movl data_items(,%edi,4), %eax
cmpl %ebx,
%eax # compare values
jle
start_loop # jump to loop beginning if
the new
# one isn’t bigger
movl %eax,
%ebx # move the value as the largest
32
jmp
start_loop # jump to loop beginning
loop_exit:
#
%ebx is the status code for the exit system call
# and it already
has the maximum number
movl $1, %eax #1 is the exit() syscall
-----------
$>
as maximum.s -o maximum.o
$> ld maximum.o -o maximum
$>./maximum
$>echo
$?
127
_________________________________________________________________
Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox.
http://www.windowslive.com/campaign/thenewbusy?ocid=PID27925::T:WLMTAGL:ON:WL:en-US:WM_HMP:032010_1
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list