亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果在64位代碼中使用32位INT0x80LinuxABI怎么辦?

如果在64位代碼中使用32位INT0x80LinuxABI怎么辦?

30秒到達戰場 2019-05-30 16:10:44
如果在64位代碼中使用32位INT0x80LinuxABI怎么辦?int 0x80在linux上,無論從哪個模式調用:args,都總是調用32位abi。ebx, ecx.。和SysCall的數字/usr/include/asm/unistd_32.h。(或在未編譯的64位內核上崩潰CONFIG_IA32_EMULATION).64位代碼應該使用syscall的電話號碼/usr/include/asm/unistd_64.h,和ARGS在rdi, rsi等看見i 386和x86-64上UNIX&Linux系統調用的調用約定是什么?。如果你的問題是重復的,有關您的詳細信息,請參閱該鏈接。應用32位或64位代碼進行系統調用.如果你想知道到底發生了什么,繼續閱讀。syscall系統調用比int 0x80系統調用,所以使用本機64位。syscall除非您正在編寫在32位或64位執行時運行相同的Polyglot機器代碼。(sysenter總是以32位模式返回,因此它在64位用戶空間中并不有用,盡管它是一個有效的x86-64指令。)有關:Linux系統調用的最終指南(關于x86)如何使int 0x80或sysenter32位系統調用,或syscall64位系統調用,或調用vdso進行“虛擬”系統調用,如gettimeofday。再加上系統調用的背景信息。使用int 0x80這樣就可以編寫以32位或64位模式組裝的東西,因此對于exit_group()在微基準的末尾什么的。當前正式的i 386和x86-64系統VpsABI文檔的PDF標準化功能和SysCall調用約定是從https:/github.com/hjl-tools/x86-psABI/wiki/x86psabi.見x86標簽維基對于初學者指南、x86手冊、正式文檔和性能優化指南/資源。但是,由于人們不斷地用代碼發布問題,int 0x8064位碼,或者是不小心構建64位二進制文件從為32位編寫的源代碼中,我想知道什么一點兒沒錯是否發生在當前的Linux上?是嗎?int 0x80保存/恢復所有64位寄存器?它是否將任何寄存器截斷為32位?如果你通過具有非零上半部的指針args,會發生什么情況?如果你把32位指針傳遞給它,它會起作用嗎?
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 1264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號