如果不使用全部四個通用寄存器,是否真的沒有辦法在程序集中將ascii字符串打印到標準輸出?Linux程序集的困境
0
A
回答
6
權,它需要的參數三個寄存器加上一個系統調用號...
但是,86有pusha
和popa
,這將推動和彈出所有的寄存器在一個指令。
$ cat hwa.S
write = 0x04
exit = 0xfc
.text
_start:
pusha
movl $1, %ebx
lea str, %ecx
movl $len, %edx
movl $write, %eax
int $0x80
popa
xorl %ebx, %ebx
movl $exit, %eax
int $0x80
.data
str: .ascii "Hello, world!\n"
len = . -str
.globl _start
$ as -o hwa.o hwa.S
$ ld hwa.o
$ ./a.out
Hello, world!
1
嗯..如果您對libc中你可以打電話puts
鏈接,那麼你就會有一些被調用者保存寄存器... :-)
但是,是的。系統調用接口是通過寄存器傳遞的。抱歉。
不要這麼震驚。如果你正在對某些調用約定進行函數調用,它也是一樣。對於許多非常標準的平臺。 (包括我所知道的所有amd64編譯器...)
1
相關問題
- 1. NHibernate集合Count()困境
- 2. Sharepoint困境:無法加載文件或程序集 - BadImageFormatException
- 3. DRY編程困境
- 4. 的RESTful API排序困境
- 5. Java - 程序在TreeSet.add中陷入困境()
- 6. UWP應用程序架構困境
- 7. ClickOnce應用程序部署困境
- 8. Linux x64程序集
- 9. Shopify:創建新集合的困境
- 10. toolbaritem的困境
- 11. KeyBinding的困境
- 12. Hibernate存儲過程困境
- 13. Sharepoint/WSS報告服務集成困境
- 14. readint nasm linux程序集
- 15. Linux程序集參考
- 16. HAML:的form_tag困境
- 17. Tkinter python的困境
- 18. 協會的困境
- 19. Android SQLite的困境
- 20. '翻譯'的困境
- 21. TreeTableView困境
- 22. WPF SolidColorBrush困境
- 23. Codeigniter URL困境
- 24. java.io困境
- 25. JPA @OneToMany困境
- 26. WinAPI ZOrder困境
- 27. 笨xss_clean困境
- 28. sendmail.php困境。
- 29. 遞歸困境
- 30. 困境與
我們說的是intel嗎? – Tom 2009-10-29 03:00:41
我們正在和&t ... – KJP 2009-10-29 03:05:39
把英特爾或AT&T的語法放在一邊(這沒什麼區別),湯姆問你是否在談論Intel x86彙編。 – ephemient 2009-10-29 04:11:24