1
Я изучаю ядро Linux, поэтому мне нужно прочитать код сборки. Вот пример кодаКак использовать как в linux с языком ассемблера
SYSWRITE=4
.globl mywrite,myadd
.text
mywrite:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ebx
movl 12(%ebp),%ecx
movl 16(%ebp),%edx
movl $SYSWRITE,%eax
int $0x80
popl %ebx
movl %ebp,%esp
popl %ebp
ret
myadd:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
movl 12(%ebp),%edx
xorl %ecx,%ecx
addl %eax,%edx
jo 1f
movl 16(%ebp),%eax
movl %edx,(%eax)
incl %ecx
1:
movl %ecx,%eax
movl %ebp,%esp
popl %ebp
ret
Я использую как в этом случае
«как -o callee.o callee.s»
скомпилировать его, но он терпит неудачу с сообщением говоря что-то вроде этого
«callee.s | 5 | Ошибка: суффикс или операндами недопустимые для` толчке '»
Рядом Дубликат: https://stackoverflow.com/questions/36861903/assembling-32-bit-binaries-on-a-64-bit- system-gnu-toolchain, который говорит о 'gcc' и' ld', но не 'as'. (Вы можете использовать 'gcc -m32 foo.S' для сборки и соединения.) –