Intel base instruction -- cmove

Conditional Move;以操作碼(條件碼)區分不同的移動條件。

opcode 以 0F 4* 打頭;

??? /*509a:?? ?eb 0b?????????????? ??? ?jmp??? 50a7 <__sprintf_chk@plt+0x2937>
??? 509c:?? ?0f 1f 40 00???????? ??? ?nopl?? 0x0(%rax)*/
??? for (i = 0; i < 8; i++) {

??? /*50a0:?? ?48 8b 03??????????? ??? ?mov??? (%rbx),%rax????? // rax=gvar_8ba0[1]="ipc"
??? 50a3:?? ?48 83 c3 08???????? ??? ?add??? $0x8,%rbx??????? // rbx=gvar_8ba0[2]

??? 50a7:?? ?48 83 ec 08???????? ??? ?sub??? $0x8,%rsp??????? // 0x7fffffff9548
??? 50ab:?? ?b9 32 00 00 00????? ??? ?mov??? $0x32,%ecx?????? // ecx=0x32
??? 50b0:?? ?41 89 e9??????????? ??? ?mov??? %ebp,%r9d??????? // r9d=ebp=pid
??? 50b3:?? ?4c 89 ff??????????? ??? ?mov??? %r15,%rdi??????? // rdi=buff
??? 50b6:?? ?50????????????????? ??? ?push?? %rax???????????? // 0x7fffffff9540:0x000055555555a117, 此為傳參
??? 50b7:?? ?4c 8d 05 60 10 00 00 ?? ?lea??? 0x1060(%rip),%r8??????? # 611e <_IO_stdin_used@@Base+0x11e>? // "/proc/%i/ns/%s"
??? 50be:?? ?ba 01 00 00 00????? ??? ?mov??? $0x1,%edx??????? // edx=1
??? 50c3:?? ?31 c0?????????????? ??? ?xor??? %eax,%eax??????? // eax=0
??? 50c5:?? ?be 32 00 00 00????? ??? ?mov??? $0x32,%esi?????? // esi=32
??? 50ca:?? ?e8 21 d3 ff ff????? ??? ?callq? 23f0 <__snprintf_chk@plt>*/
??????? sprintf(buff, "/proc/%i/ns/%s", temp->pid, gvar_8ba0[i]);

??? /*50cf:?? ?4c 89 f2??????????? ??? ?mov??? %r14,%rdx??????? // rdx=r14=st
??? 50d2:?? ?4c 89 fe??????????? ??? ?mov??? %r15,%rsi??????? // buff="/proc/1/ns/cgroup"
??? 50d5:?? ?bf 01 00 00 00????? ??? ?mov??? $0x1,%edi??????? // edi
??? 50da:?? ?e8 41 d5 ff ff????? ??? ?callq? 2620 <__xstat@plt>*/
??????? if (__xstat(1, buff, &st)) {
??????????? temp->ns[i] = 0;
??????????? continue;
??????? }

??? /*50df:?? ?5a????????????????? ??? ?pop??? %rdx???????????? // rdx=0x000055555555a117, rsp=0x7fffffff9548
??? 50e0:?? ?59????????????????? ??? ?pop??? %rcx???????????? // rcx=0x555555559025, rsp=0x7fffffff9550
??? 50e1:?? ?85 c0?????????????? ??? ?test?? %eax,%eax
??? 50e3:?? ?b8 00 00 00 00????? ??? ?mov??? $0x0,%eax
??? 50e8:?? ?48 0f 44 44 24 08?? ??? ?cmove? 0x8(%rsp),%rax?? // rsp+0x8=0x7fffffff9558, cmove:Move if equal (ZF=1)
??? 50ee:?? ?49 83 c5 08???????? ??? ?add??? $0x8,%r13??????? // r13=temp->ns[1], temp->ns[2], ...
??? 50f2:?? ?49 89 45 f8???????? ??? ?mov??? %rax,-0x8(%r13)*/// temp->ns[1] = rax
??????? temp->ns[i] = st.st_ino;??? // __xstat返回值eax為零時才執行,不為零時繼續for循環,此處隱含了上面的 continue 語句。

??? /*50f6:?? ?48 8d 05 db 3a 00 00 ?? ?lea??? 0x3adb(%rip),%rax??????? # 8bd8 <_IO_stdin_used@@Base+0x2bd8>??? rax=gvar_8ba0[1]
??? 50fd:?? ?48 39 c3??????????? ??? ?cmp??? %rax,%rbx??????? // 8bd8-8ba0=0x38, 0x38/8=7
??? 5100:?? ?75 9e?????????????? ??? ?jne??? 50a0 <__sprintf_chk@plt+0x2930>*/
??? }?? /* for (i = 0; i < 8; i++) end */

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17488.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17488.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17488.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TIM(Timer)簡介

TIM&#xff08;Timer&#xff09;定時器介紹 定時器可以對輸入的時鐘進行計數&#xff0c;并在計數值達到設定值時觸發中斷16位計數器、預分頻器、自動重裝寄存器的時基單元&#xff0c;在72MHz計數時鐘下可以實現最大59.65s的定時不僅具備基本的定時中斷功能&#xff0c;而且…

maven的下載以及配置的詳細教程(附網盤下載地址)

文章目錄 下載配置IDEA內部使用配置 下載 1.百度網盤下載 鏈接: https://pan.baidu.com/s/1LD9wOMFalLL49XUscU4qnQ?pwd1234 提取碼: 1234 2.解壓即可 配置 1.打開安裝文件下conf下的settings.xml文件&#xff0c;我的如下 2.修改配置信息&#xff08;目的是為了修改本地…

【Fiddler抓包工具】第五節.安卓、IOS抓包+fildder插件

文章目錄 前言一、HTTPS抓包 1.1 HTTPS與HTTP區別 1.2 HTTPS抓包設置過程 1.3 錯誤解決方法 1.4 驗證證書是否安裝成功 1.5 Firefox HTTPS請求捕獲二、IOS設備APP抓包 2.1 APP抓包Fiddler設置 2.2 APP抓包IOS設備設置 2.3 And…

【Redis】 關于 Redis 集合類型

文章目錄 &#x1f343;前言&#x1f333;普通命令&#x1f6a9;sadd&#x1f6a9;smembers&#x1f6a9;sismember&#x1f6a9;scard&#x1f6a9;spop&#x1f6a9;smove&#x1f6a9;srem &#x1f332;集合間操作&#x1f6a9;sinter&#x1f6a9;sinterstore&#x1f6a9…

C# --- 浮點數類型 float, double, decimal

C# --- 浮點數類型 float, double, decimal float, double, decimaldecimal float, double, decimal decimal double 和 float 的采用base 2, 不能精確的表示浮點數, 進行加減乘除的操作的時候會出現精度丟失的問題decimal 采用base 10&#xff0c;可以精確的表示浮點數&#x…

客戶體驗:電子元器件商城配送滿意度調查

背景介紹 電子元器件商城為了提升配送服務質量&#xff0c;決定開展配送滿意度調查&#xff0c;以了解客戶對配送服務的評價和意見。通過客戶的反饋&#xff0c;商城將進一步優化配送流程&#xff0c;提高客戶滿意度&#xff0c;增強市場競爭力。 調查內容 配送時效性&#xf…

linux 之dma_buf (4)- mmap

一、前言 前面幾篇都是在 kernel space 對 dma-buf 進行訪問的&#xff0c;本篇我們將一起來學習&#xff0c;如何在 user space 訪問 dma-buf。當然&#xff0c;user space 訪問 dma-buf 也屬于 CPU Access 的一種。 二、mmap 為了方便應用程序能直接在用戶空間讀寫 dma-bu…

nbcio-vue升級遷移flowable到最新的jeeg-boot-vue3的問題記錄(一)

因為這個項目license問題無法開源&#xff0c;更多技術支持與服務請加入我的知識星球。 1、vue3 jeeg-boot-vue3新版本的流程定義的頁面&#xff0c;刷新出現下面問題&#xff0c;或第一次進去也一樣 看著好像就一個警告的信息&#xff0c;不知道是什么原因引起的&#xff0c;應…

111.二叉樹的最小深度

給定一個二叉樹&#xff0c;找出其最小深度。 最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7], 返回它的最小深度 2. 思路&#xff1a; 后序遍歷&#xff08;左右中&#xff…

深入理解 Nginx Concat 模塊:示例、安裝和使用方法

Nginx 是一個高性能的開源 Web 服務器,廣泛用于構建可靠的 Web 應用程序和服務。其中的 Concat 模塊為用戶提供了在服務器端快速合并和傳輸多個文件的能力,從而提高了網頁加載速度和性能。在本文中,我們將深入探討 Nginx Concat 模塊的安裝、示例以及使用場景。 什么是 Ngi…

【設計模式深度剖析】【5】【結構型】【橋接模式】| 以電視和遙控器為例加深理解

&#x1f448;?上一篇:組合模式 設計模式-專欄&#x1f448;? 目 錄 橋接模式(Bridge Pattern)定義英文原話是&#xff1a;直譯理解 4個角色UML類圖代碼示例 應用優點缺點使用場景 示例解析&#xff1a;電視和遙控器UML類圖 橋接模式(Bridge Pattern) 定義 英文原話是&am…

band對應頻段列表(2G、4G、5G)

5G BAND對應頻段 n1:2.1G n3:1.8 n5:850 n8:900 n28:700 n41:2.6G n77:3.3G n78:3.5G n79:4.9G n257、258、260&#xff1a;毫米波頻段(26G&#xff0c;28G,39G) 4G BAND對應頻段 Band1:2.1G–上行1920-1980 MHz&#xff0c;下行2110-2170 MHz Band3:1.8G–上行1710-1785 MH…

CC工具箱使用指南:【淹沒區分析(BHM)】

一、簡介 群友定制工具。 這個工具適用面比較小。 工具的應用場景如下&#xff1a; 提供一個淹沒區范圍&#xff0c;類型是面要素。統計這個范圍內的一些線、面要素的面積或長度。 給定的幾個數據有&#xff1a;耕地、永久基本農田、房臺、道路&#xff08;線&#xff09;…

基于Docker搭建屬于你的CC++集成編譯環境

常常&#xff0c;我會幻想著擁有一個隨時可以攜帶、隨時可以使用的開發環境&#xff0c;那該是多么美好的事情。 在工作中&#xff0c;編譯環境的復雜性常常讓我頭疼不已。稍有不慎&#xff0c;刪除了一些關鍵文件&#xff0c;整個編譯鏈就會瞬間崩潰。更糟糕的是&#xff0c;…

【Go語言入門學習筆記】Part6.包和兩個幾乎用不到的小Tip

一、前言 這個文章簡單了寫了一下包、init函數、匿名函數。 二、學習代碼 1.包 package packTestimport "fmt"func init() { //如果主函數引用了這個包&#xff0c;主函數執行的時候會先執行包的initfmt.Println("hello world") }func Add(num1 int, num…

如何保養和維護氣膜體育館—輕空間

隨著經濟的飛速發展&#xff0c;氣膜體育館以其新穎的外觀、優美的造型、節能環保的特點&#xff0c;迅速進入體育市場。然而&#xff0c;對于氣膜體育館的維護和保養是不容忽視的問題&#xff0c;必須引起重視。下面我們將詳細介紹氣膜體育館的維護需要從哪些方面著手。 一、保…

公路行業交通工程乙級資質的動態考核要點

技術人員保持與更新&#xff1a; 核查技術人員的在職狀態、專業資格證書的有效性&#xff0c;以及新增或離職技術人員的情況&#xff0c;確保關鍵崗位人員的穩定性和資質要求的持續達標。評估技術人員的專業發展&#xff0c;包括繼續教育、培訓和參與專業活動的情況&#xff0c…

【電路筆記】-狀態可變濾波器

狀態可變濾波器 文章目錄 狀態可變濾波器1、概述2、**狀態可變濾波器電路**3、狀態可變濾波器示例4、陷波濾波器設計5、總結狀態可變濾波器是一種多反饋濾波器電路,可以從同一單個有源濾波器設計中同時產生所有三種濾波器響應:低通、高通和帶通。 1、概述 狀態可變濾波器使用…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 新聞資訊 的設計與實現

一.項目介紹 本系統分為 后端 和 小程序端 后端&#xff1a;點擊登錄按鈕 設置個人中心、 管理員賬號數據維護、 基礎數據維護、 短視頻信息維護(包括查看短視頻留言、短視頻收藏)、 論壇維護(增刪改查帖子信息&#xff0c;包括查…

Rabbit MQ學習之《基礎概念》

Message Queue 1 什么是MQ MQ(message queue)&#xff0c;本質是個隊列&#xff0c;FIFO 先入先出&#xff0c;只不過隊列中存放的內容是message而已&#xff0c;同時是一種跨進程的通信機制&#xff0c;用于上下游傳遞消息。 在互聯網架構中&#xff0c;MQ 是一種非常常見的…